【问题标题】:Opening firewall for a Windows Service为 Windows 服务打开防火墙
【发布时间】:2011-02-10 20:49:27
【问题描述】:

我有一个需要由 xml-rpc 客户端从外部访问的 C# 服务应用程序。它通过 HttpListenerRequest 自托管;不是 IIS 托管的。 (不能要求服务器启用 IIS)

当服务器防火墙关闭或应用程序使用的端口打开时,它可以从客户端正常工作。但是,如果我创建一个防火墙例外以通过其名称启用该应用程序;它无法从客户端 PC 访问。 (我已尝试手动启用该服务并添加代码以从我的安装程序启用该应用程序。)

我希望启用应用程序的原因;而不是端口是端口可能会改变。 (如果默认端口正在使用中,我的应用程序将检查可用端口的范围)。环顾四周,任何不完全“自托管”的服务似乎都无法启用防火墙。

有人知道解决方法吗?

【问题讨论】:

    标签: c# windows service firewall


    【解决方案1】:

    不确定语法,但我认为您必须使用 netsh 与这样的东西:

    netsh http add urlacl url=http://www.contoso.com:80/MyUri user=DOMAINE\utilisateur listen=yes
    

    【讨论】:

    • 这将授予程序保留端口并开始监听它的权限。他已经让服务完全运行和监听。是防火墙阻止了对服务的传入请求。
    【解决方案2】:

    尝试为您的服务将 SID 类型设置为 unrestricted

    Create an Inbound Program or Service Rule

    虽然该命令也允许 NONE 的值,但该设置意味着该服务不能在此处描述的防火墙规则中使用。默认情况下,Windows 中的大多数服务都配置为 UNRESTRICTED。如果将 SID 类型更改为 RESTRICTED,服务可能无法启动。我们建议您仅更改要在防火墙规则中使用的服务的 SID 类型,并将 SID 类型更改为 UNRESTRICTED。

    页面上说要使用命令

    sc sidtype <Type> <ServiceName>
    

    但是对我来说,sc 工具本身说要使用它:

    sc sidtype <ServiceName> <Type>
    

    也许该服务还必须在“网络服务”帐户下运行。我没有完全让我的服务运行。编辑:My problem was due to WCF 而不是这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多