自托管WebApi可通过LAN访问

时间:2013-05-31 23:29:18

标签: asp.net-web-api self-hosting

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

总之,在运行它的机器上完成教程之后: 浏览

localhost:3636/api/products/ 

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

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.。)我可以从LAN上的其他机器成功ping和tracert到192.168.0.x

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

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

3 个答案:

答案 0 :(得分:3)

那不是硬件防火墙,它是Windows防火墙!哎呀,我浪费了很多时间。一旦我关闭了Windows防火墙(无论如何,代码都在内部网中运行)一切正常。

任何人都知道一个很好的网站,解释防火墙和wireshark如何互动;或者我认为只需要进行第一次测试。

答案 1 :(得分:0)

我会尝试一些事情:

首先,摆脱HostNameComparisonMode行。这实际上可能会禁用来自其他计算机的请求。

如果仍然无效,请尝试删除URL ACL并以管理员身份运行您的应用程序,看看是否有效。如果可行,您可以重新添加URL ACL,而不必以管理员身份运行。您只需要使用带有“+”作为主机名的那个。

答案 2 :(得分:0)

当我尝试使用OWIN进行自我托管时,我遇到了同样的问题。对我有用的是 -

  1. 以管理员身份运行Visual Studio
  2. 删除我在调试此问题时添加的所有netsh urlacl端口注册
  3. 将入站规则添加到我的Windows防火墙 我按照此链接上的说明操作 https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/firewall-instructions 请查看“提前启用端口范围”部分
  4. 那就是它!我能够从网络上的其他计算机上调用我的api。

    希望这会有所帮助......