自托管WebApi可通过LAN访问

Dav*_*vid 9 self-hosting asp.net-web-api

Self Host WebApi是一个新手,但我对其易用性和可扩展性印象深刻.至少通过本教程.到目前为止我所做的一切都在我的开发机器上运行,无论我使用的是localhost,127.0.0.1,还是我的LAN Ip(192.168.0.x),但我很困惑为什么我无法从任何其他计算机访问该服务甚至其他计算机在同一个子网中.

简而言之,在运行它的机器上完成教程之后:浏览到

localhost:3636/api/products/ 
Run Code Online (Sandbox Code Playgroud)

导致预期的xml返回.在局域网上的另一台机器浏览到:

192.168.0.x:3636/api/products/ 
Run Code Online (Sandbox Code Playgroud)

导致超时数据指向那些可能知道这一切如何相互作用的人:

1.)我的开发机器(192.168.0.x,服务器,主机,无论你想调用它)都有IIS; 我是如此偏执,这是通过管理GUI停止它的方式

2.)我已使用以下命令行执行保留URL /端口:

    >netsh http add urlacl url=http://+:3636/ user=DOMAIN\USER listen=yes delegate=yes
    >netsh http add urlacl url=http://192.168.0.x:3636/ user=DOMAIN\USER listen=yes delegate=yes
Run Code Online (Sandbox Code Playgroud)

2.b)我已经一起尝试了这两个,并尝试将用户更改为"所有人"无济于事

3.)我试图更改教程中的代码来设置

    config.HostNameComparisonMode = HostNameComparisonMode.Exact //default is Strong Wildcard 
Run Code Online (Sandbox Code Playgroud)

4.)我可以从LAN上的其他计算机成功ping和tracert到192.168.0.x.

5.)一位朋友建议我设置一个TCPListener并确保我可以远程登录以消除防火墙的可能性.如果这个逻辑是合理的,防火墙不是问题

编辑:感谢您的帮助,这是另一个数据点,我相信它确认它不是防火墙问题.我以前在一个相当迟钝(至少是像我这样的非认证人员)瞻博网络防火墙/路由器后面发布了这个连接.我已经在家庭网络上的另一台机器(没有IIS)上重做教程,但仍无法将服务发布到局域网内的其他计算机上.有任何想法吗?

Dav*_*vid 3

嗯,这不是硬件防火墙,而是 Windows 防火墙!哎呀我在这上面浪费了很多时间。一旦我关闭了 Windows 防火墙(无论如何代码都在 Intranet 中运行),一切就正常了。

任何人都知道有一个很好的网站可以解释防火墙和wireshark如何交互;或者我想这只是一个人的第一次测试。

  • 这不是答案 (3认同)