自托管WebApi可通过LAN访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自托管WebApi可通过LAN访问相关的知识,希望对你有一定的参考价值。

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=DOMAINUSER listen=yes delegate=yes
    >netsh http add urlacl url=http://192.168.0.x:3636/ user=DOMAINUSER 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)上重做教程,但仍无法将服务发布到局域网内的其他计算机上。有任何想法吗?

答案

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

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

另一答案

我会尝试几件事:

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

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

另一答案

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

  1. 以管理员身份运行Visual Studio
  2. 删除我在调试此问题时添加的所有netsh urlacl端口注册
  3. 将入站规则添加到我的Windows防火墙我按照此链接上的说明进行操作https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/firewall-instructions查看部分 - 提前启用端口范围

而已!我能够从网络上的其他计算机上调用我的api。

希望这可以帮助...

以上是关于自托管WebApi可通过LAN访问的主要内容,如果未能解决你的问题,请参考以下文章

GitLab

GitLab安装部署

安装gitlab并汉化

Gitlab代码管理仓库安装部署

Gitlab部署及汉化操作

持续集成之Gitlab安装与应用