【发布时间】:2015-07-21 09:06:34
【问题描述】:
我有一个使用 HttpBinding 的 WCF 服务。该服务在自托管进程(Windows 服务)中运行,该进程位于 Windows 防火墙例外列表中。
如果防火墙处于活动状态,并且我尝试使用 C# 客户端或 Internet Explorer 访问服务,则服务不会响应。但是,如果防火墙被禁用,则连接就像一个魅力。
是否有人使用 WCF 和 Windows 防火墙过期?问题出现在 Windows 7 64 位上。我还没有尝试其他操作系统。
我应该怎么做才能使用活动的防火墙?
问候迈克尔
编辑: 我发现了一条线索,必须将 http.sys 添加到防火墙例外列表中,因为 wcf 自托管使用 http.sys。任何建议,如何解决这个问题?
编辑: 我尝试手动打开所有监听端口,这也可以,但不是一个选项,因为我事先不知道它们。
【问题讨论】:
-
尝试打开服务使用的端口?即端口 80、8080 或您配置的任何端口。由于它使用常规 http 我看不到问题:(
-
我刚试过,它有效。但是为了提供简单的用户体验,这在生产环境中不是一个选项。 (看来端口变了……)
-
端口会改变听起来很奇怪?您是否使用 IIS 发布服务?我想您必须执行一个例程来检查服务现在使用哪个端口,并在防火墙中以编程方式打开该端口,如果这可能的话。如果端口在防火墙中关闭,您可能无法访问该服务。
-
防火墙由应用程序的设置例程配置。此时我不知道服务会使用哪个端口,也许用户会更改默认设置。所以我需要基于进程而不是端口打开防火墙。该服务是自托管的(无 IIS)。