打开Windows服务的防火墙

时间:2011-02-10 20:49:28

标签: c# windows service firewall

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

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

我想要启用应用程序的原因;而不是端口是端口可能会改变。 (我的应用程序将在默认端口正在使用的关闭机会上检查可用端口的范围)。从环顾四周看来,任何未完全“自托管”的服务都无法启用防火墙。

有没有人知道这方面的解决方法?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

尝试为您的服务将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而不是这个。