Self Host WebApi 非常新,但它的易用性和可扩展性给我留下了深刻的印象。至少通过本教程。到目前为止,我所做的一切都适用于我的开发机器,无论我使用 localhost、127.0.0.1 还是我的 LAN Ip (192.168.0.x),但我很困惑为什么我无法从任何其他计算机甚至其他计算机访问该服务在同一个子网中。
简而言之,在运行它的机器上完成教程后:浏览到
localhost:3636/api/products/
导致预期的 xml 返回。在 LAN 上的另一台机器上浏览到:
192.168.0.x:3636/api/products/
导致超时 对于那些可能知道这一切如何交互的人的数据点:
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
2.b)我已经同时尝试了这两种方法,并尝试将用户更改为“每个人”都无济于事
3.)我试图改变教程中的代码来设置
config.HostNameComparisonMode = HostNameComparisonMode.Exact //default is Strong Wildcard
4.)我可以从局域网上的其他机器成功ping和tracert到192.168.0.x
5.) 一位朋友建议我设置一个 TCPListener 并确保我可以远程登录到它以消除防火墙的可能性。如果这个逻辑是合理的,那么防火墙就不是问题
编辑:感谢您的帮助,这是我认为确认这不是防火墙问题的另一个数据点。我之前在一个相当迟钝的(至少对于像我这样的非认证人员)瞻博网络防火墙/路由器后面发布了这个连接。我已经在我的家庭网络上的另一台机器(没有 IIS)上重做了教程,但仍然无法将服务发布到我局域网中的其他计算机。有任何想法吗?