Windows 10防火墙阻止了WCF http服务

时间:2016-09-29 17:46:02

标签: c# wcf windows-firewall

我有3个自托管的WCF Windows服务,使用基本的http绑定通过http端口80相互通信。在同一台机器上,我有一个托管在IIS中的网站(也在默认端口80上运行),该网站还管理这些服务并与之通信。在这个Windows 10托管机器中一切正常,即网站可以与服务通信,服务可以互相通话。

当我尝试从网络上的另一台PC访问该网站时,我在浏览器中收到一条消息,说“找不到服务器DNS地址'”。我甚至无法访问WCF服务元数据网址。

这看起来像是主机上的防火墙问题,所以我添加了TCP端口80的入站和出站规则,并确保了规则'万维网服务(HTTP流入)'和#'万维网服务(HTTPS流量输入)'已启用。这些更改都没有奏效,因此我删除了我添加的TCP规则。

最后我完全禁用了防火墙,并且我能够从另一台PC访问该网站。但是,当我重新启用防火墙时,网站继续工作,突然我的WCF元数据也可以访问! 我不明白为什么会这样。我已经多次成功地重新创建了这个问题。

有人可以提供解释或建议任何其他防火墙规则吗?

我的最终目标是将服务和网站打包成安装程序,因此我不希望我的最终用户不得不使用防火墙。他们甚至可能无法将其关闭再打开。

非常感谢

2 个答案:

答案 0 :(得分:0)

http端口80的出站规则怎么样?

答案 1 :(得分:0)

终于明白了。我用来访问托管机的网址使用了机器名称。为了使机器响应名称查找,为公共配置文件启用名为“网络发现(NB-Name-In)”的防火墙规则。此规则允许UDP端口137上的流量。一旦缓存了名称查找,将正确路由URL。这解释了为什么它在禁用后再次启用防火墙后才起作用。