【问题标题】:WCF service blocked by Windows FirewallWCF 服务被 Windows 防火墙阻止
【发布时间】: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)。

标签: wcf http firewall


【解决方案1】:

试试 MSDN 文章 Configuring HTTP and HTTPS

【讨论】:

  • 最后...我不确定这是否是您回答的意图,但文章指出:“WCF 的自托管 HTTP 寻址未集成到 Windows 个人防火墙中。一个必须将异常添加到防火墙配置中,以允许使用特定 URL 的入站连接。”我认为“异常”是端口异常(不是进程)。至少这是我的经验。
【解决方案2】:

据我所知,将自托管的 WCF 服务进程添加到防火墙不起作用,因为它不是该进程进行入站调用,它只有在以下情况下才起作用

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

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 2019-04-07
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多