C#HttpListener和Windows防火墙
本文关键字:防火墙 Windows C#HttpListener | 更新日期: 2023-09-27 18:24:52
我正在处理的一个程序有一个内置的Web服务器,旨在只处理非常特定的请求(静态)。与TcpListener不同,当HttpListener启动时,不会提示用户允许程序在哪些网络上侦听。这导致了一个大问题,因为程序需要侦听远程连接,而这些连接现在被windows防火墙拒绝。
如果我在windows防火墙中制定一个新规则,并在"程序和服务"下选择我的程序,windows仍然会拒绝所有远程连接。。。但如果我选择"所有符合指定条件的程序",那么它就可以正常工作。我的问题是为什么?当我的应用程序被特别选中时,为什么防火墙会拒绝它?为什么用户不会像其他监听器一样收到防火墙安全屏幕的提示?
这是因为HttpListener是在http.sys之上构建的,http.sys将侦听您代表程序指定的端口。
我还没有找到一种方法,只允许一个程序通过Windows防火墙使用HttpListener,但您可能想通过以下方式将入站规则限制为系统组件:
- 在"程序和服务"选项卡的"This program"字段中输入system
- 在"协议和端口"选项卡中选择协议类型TCP以及要侦听的端口