2013-07-25 74 views
3

我正在使用的一个程序有一个内置的网络服务器,意在处理非常具体的请求(静态)。与TcpListener不同,当HttpListener启动时,用户不会被提示允许程序被允许监听哪些网络。这是一个很大的问题,因为程序需要监听远程连接,而这些连接现在正被Windows防火墙拒绝。C#HttpListener和Windows防火墙

如果我在Windows防火墙中制定新规则,并在“程序和服务”下选择我的程序,Windows仍然会拒绝所有远程连接...但是如果我选择“符合指定条件的所有程序”,那么它工作得很好。我的问题是为什么?为什么防火墙在特定选择时拒绝我的应用程序?以及用户如何不像其他监听器那样得到防火墙安全屏幕的提示?

+0

您是否在该配置中添加了正确的(调试/版本)版本。不知道这是否有所作为,但它可能是基于位置的。 – ChrisBint

+0

我正在使用已安装的发行版本(与部署项目安装程序一起安装) – Wilson212

+0

您是否试图直接打开端口? –

回答

9

这是因为HttpListener建立在http.sys之上,它会监听您代表程序指定的端口。

我还没有找到一种方法,通过Windows防火墙使用HttpListener只允许一个程序,但你可能想只限制入站规则系统组件:

  • 输入打字系统在现场“这个计划”在该选项卡的“程序和服务”
  • 选择协议类型TCP在选项卡“协议和端口”连同端口,你会在
被监听
+2

适合我。你怎么知道程序的名字应该是“系统”? – Grezzo

+0

我也很想知道;) – burtonium76