2010-06-09 145 views
11

我有一个使用HttpBinding的WCF服务。该服务正在自托管过程(A Windows服务)中运行,并且此过程位于Windows防火墙例外列表中。Windows防火墙阻止WCF服务

如果防火墙处于活动状态,并且我尝试使用C#客户端或Internet Explorer访问该服务,则该服务不会响应。但是,如果防火墙被禁用,连接就像一个魅力。

有没有人有过期与WCF和Windows防火墙?这个问题出现在Windows 7 64bit上。我没有尝试另一个操作系统。

我该怎么做才能使这个工作与主动防火墙?

问候迈克尔

编辑: 我发现了一个线索,即HTTP.SYS已被添加到防火墙例外列表,WCF自主机使用HTTP.SYS。任何建议,如何解决这个问题?

编辑: 我试着手动打开所有的侦听端口,这也起作用,但不是一个选项,因为我不提前知道它们。

+0

尝试打开服务使用的端口?即端口80,8080或任何你已经配置。因为它使用普通的http我看不到问题:( – KTrum 2010-06-10 07:04:43

+0

我刚刚尝试过,它的工作原理,但为了提供一个简单的用户体验,这不是一个生产环境中的选项(看起来端口已更改...) – 2010-06-10 07:26:23

+0

听起来有点奇怪,端口会改变吗?你使用IIS来发布服务吗?我想你将不得不做一个例程来检查服务现在使用哪个端口,并在防火墙中以编程方式打开该端口,如果这是甚至可能如果端口在防火墙中关闭,您可能无法访问该服务 – KTrum 2010-06-10 07:41:44

回答

5

请尝试MSDN的文章Configuring HTTP and HTTPS

+2

最后...我不确定这是否是内容的意图您的答案,但文章指出:“WCF的自托管HTTP寻址没有集成到Windows个人防火墙中。必须在防火墙配置中添加一个例外,以允许使用特定URL的入站连接。“我认为'例外'是一种端口例外(不是过程),至少这是我的经验。 – 2010-11-30 08:27:39

4

据我所知,增加自助托管WCF服务过程中的防火墙不起作用,因为它不是过程采取呼入呼叫,它只能如果

  1. 附加服务端口全球端口例外
  2. 添加WCF入站守护进程来处理异常,我不确定有关http,但对于net.tcp绑定,您需要$ FrameworkDir/SMSvcHost.exe而不是您的进程。