第 #2 轮:HttpListener 未接收外部请求

本文关键字:外部 请求 HttpListener | 更新日期: 2023-09-27 18:32:57

此问题相同的情况,即使防火墙关闭并注册了所有前缀,HttpListener也不会收到远程请求,即:

  • HttpListener 仅接收来自同一台计算机的请求
  • 应用程序在 Windows EC2 实例上运行(与其他问题的规格相同(
  • 正在使用的端口在防火墙中注册并打开(我还暂时关闭了防火墙以确保这不是问题(
  • 我使用的前缀是 http://*:8080/

与其他问题的区别:

  • EC2 的安全组配置正确
  • 它接受外部请求,直到(据我所知(今天,我不知道任何系统更改(但我对所有想法都持开放态度(

附加信息:

  • EC2 实例和系统正在通过所有状态检查
  • 我重新启动了实例;没有变化
  • 发回(不是从我的服务器应用程序,而是从系统(发送到远程客户端的 http 状态代码是 503(服务不可用(
  • 我已经检查并重新检查了 URL 是否正确(我有一个弹性 IP 地址,并且正在使用 URL 中实例的公有 DNS(
  • 我运行了netstat以确保该端口未被其他进程使用

完全欢迎任何检查或尝试的想法;我几乎没有想法了...

第 #2 轮:HttpListener 未接收外部请求

如果同一端口上有多个 urlacl,例如:

$ netsh http show urlacl
Reserved URL            : http://+:8080/
    User: PUBEN'myself
        Listen: Yes
        Delegate: No
        SDDL: D:(A;;GX;;;S-1-5-21-436374069-1547161642-1177238915-5114)
Reserved URL            : http://192.168.47.120:8080/
    User: 'Everyone
        Listen: Yes
        Delegate: No
        SDDL: D:(A;;GX;;;WD)
Reserved URL            : http://127.0.0.1:8080/
    User: 'Everyone
        Listen: Yes
        Delegate: No
        SDDL: D:(A;;GX;;;WD)

由于列表中的第一个预订,您将获得服务不可用。要修复,

netsh http delete urlacl url=http://+:8080/

或者只是使用 Suave.io,省去头痛。

几个想法,有些你可能已经检查过了:

  • 确保你仍然可以在机器上本地点击侦听器 - 只是为了找出代码迭代本身的错误

  • 确保该计算机上的该端口上没有其他任何运行

  • 检查事件查看器 - 其中是否有任何可能适用的错误? 其他活动? 最近的Windows更新 - 什么?

  • 尝试其他端口 - 要排除端口冲突,请尝试其他端口

  • 确保您绑定到前缀:http://*:{your-port-#-here}/- 此外,当您进行调用时,HttpListener 可以非常具体,如果您在注册的前缀中包含尾部斜杠,请确保在调用中包含该斜杠等。

  • 当您尝试访问计算机时 - 您使用的地址是什么:EC2 弹性 IP 地址、EC2 公有 DNS、已路由到该计算机的某个 DNS 名称? 我以前见过 EC2 机器在重新启动后更改公有 IP/DNS,也许您的机器已经更改了?

这就是我现在能想到的。 祝你好运。