1

与此问题相同的情况,HttpListener 未接收远程请求,即使防火墙关闭并且所有前缀都已注册,即:

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

与其他问题的区别:

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

附加信息:

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

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

4

2 回答 2

7

如果您在同一个端口上有多个 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)

由于列表中的第一个预订,您将获得 ServiceUnavailable。修理,

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

或者只是使用Suave.io并省去自己的头痛。

于 2013-09-25T13:23:13.210 回答
2

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

  • 确保您仍然可以在机器上本地访问侦听器 - 只是为了找出代码本身的问题

  • 确保该机器上的该端口上没有其他任何东西在运行

  • 检查事件查看器 - 那里可能存在任何错误?其他活动?最近的 Windows 更新 - 什么?

  • 尝试另一个端口 - 要排除端口冲突,请尝试另一个端口

  • 确保您绑定到前缀:http://*:{your-port-#-here}/ - 另外,当您拨打电话时,HttpListener 可以非常具体,如果您在注册的前缀中包含斜杠确保将其包含在通话中,等等。

  • 当您尝试访问机器时 - 您使用的是什么地址:EC2 弹性 IP 地址、EC2 公共 dns、您已路由到该机器的一些 DNS 名称?我已经看到 EC2 机器在重启后更改了公共 IP/DNS,也许你的机器已经改变了?

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

于 2012-05-01T04:06:33.710 回答