C#HttpListener和Windows防火墙

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

如果我在Windows防火墙中创建一个新规则,并在“程序和服务”下选择我的程序,Windows仍将拒绝所有远程连接……但如果我选择“所有符合指定条件的程序”,那么它只能工作精细。 我的问题是为什么? 为什么防火墙会在专门选择时拒绝我的应用程序? 为什么用户不会像使用其他监听器一样获得防火墙安全屏幕的提示?

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

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

  • 在“程序和服务”选项卡的“此程序”字段中输入打字系统
  • 在“协议和端口”选项卡中选择协议类型TCP以及您将要监听的端口