【问题标题】:Round #2: HttpListener not receiving outside requests第 2 轮:HttpListener 未收到外部请求
【发布时间】:2012-05-10 17:17:48
【问题描述】:

与本题HttpListener not receiving remote requests, even with the firewall down and all prefixes registered相同的情况,即:

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

与其他问题的区别:

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

附加信息:

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

完全欢迎任何关于检查或尝试的想法;我的想法已经用完了......

【问题讨论】:

  • 你能发布一些代码吗?您有可能只在内部接口上监听 (localhost),因此无法通过远程请求。
  • 很遗憾,由于保密协议,我无法发布代码,但它正在监听 http://*:8080/ - 这是您建议我检查的内容还是其他内容?
  • 如果它响应本地请求而不响应远程请求,那么问题可能出在防火墙或其他安全设备上,而不是HttpListener
  • 打开了相应的防火墙端口;为了验证这不是防火墙问题,我将其关闭 - 没有变化。此外,EC2 安全组也已正确配置(我也已检查并重新检查)。

标签: c# amazon-ec2 windows-server-2008-r2 httplistener http.sys


【解决方案1】:

如果您在同一个端口上有多个 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 并省去您的麻烦。

【讨论】:

    【解决方案2】:

    一些想法,你可能已经检查过:

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

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

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

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

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

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

    目前我能想到的就这些了。祝你好运。

    【讨论】:

    • 我确实检查了大部分这些东西,但还是很棒的清单!我没有尝试过其他端口,因为每次运行 netstat 时似乎没有其他进程使用 8080,但是我按照您的建议添加了端口 8081 和 8082,本地和远程流量都通过它们到达侦听器。关于它为什么突然停止为 8080 工作的任何想法,即使它已注册、在防火墙中打开、似乎没有冲突等?
    • 尝试运行 netstat 查看正在使用的端口:microsoft.com/resources/documentation/windows/xp/all/proddocs/…
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    相关资源
    最近更新 更多