5

我正在开发的其中一个程序有一个内置的网络服务器,仅用于处理非常特定的请求(静态)。与 TcpListener 不同的是,当启动 HttpListener 时,不会提示用户允许程序允许侦听哪些网络。这导致了一个大问题,因为程序需要侦听远程连接,而这些远程连接现在被 Windows 防火墙拒绝。

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

4

1 回答 1

18

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

我还没有找到一种方法只允许单个程序通过 Windows 防火墙使用 HttpListener,但您可能希望仅通过以下方式将入站规则限制为系统组件:

  • 在“程序和服务”选项卡的“此程序”字段中输入键入系统
  • 在“协议和端口”选项卡中选择协议类型TCP以及您将要监听的端口
于 2014-01-26T14:29:51.817 回答