我正在处理的其中一个程序有一个内置的Web服务器,只能处理非常具体的请求(静态).与TcpListener不同,当启动HttpListener时,不会提示用户允许程序允许侦听哪些网络.这导致了一个大问题,因为程序需要侦听远程连接,这些连接现在被Windows防火墙拒绝.
如果我在Windows防火墙中创建一个新规则,并在“程序和服务”下选择我的程序,Windows仍将拒绝所有远程连接…但如果我选择“所有符合指定条件的程序”,那么它只能工作精细.我的问题是为什么?为什么防火墙会在专门选择时拒绝我的应用程序?为什么用户不会像其他听众那样得到防火墙安全屏幕的提示?
解决方法:
这是因为HttpListener构建在http.sys之上,它将侦听您代表程序指定的端口.
我还没有找到通过Windows防火墙只允许使用HttpListener的单个程序的方法,但您可能希望仅通过以下方式将入站规则限制为系统组件:
>在“程序和服务”选项卡的“此程序”字段中输入打字系统
>在“协议和端口”选项卡中选择协议类型TCP以及您将要监听的端口
标签:c,httplistener,windows-firewall
来源: https://codeday.me/bug/20190718/1492680.html