第二轮:HttpListener没有收到外部请求

时间:2012-05-01 03:47:49

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

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

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

与其他问题的区别:

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

其他信息:

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

任何有待检查或尝试的想法都是受欢迎的;我几乎没有想法......

2 个答案:

答案 0 :(得分: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并避免头痛。

答案 1 :(得分:1)

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

  • 确保你仍然可以在机器上本地点击监听器 - 只是为了解决代码自身的错误

  • 确保该机器上的该端口上没有其他任何内容正在运行

  • 检查事件查看器 - 可能存在的任何错误?其他事件?最新的Windows Update - 什么?

  • 尝试另一个端口 - 排除端口冲突,尝试不同的端口

  • 确保绑定到前缀:http:// *:{your-port - # - here} / - 同样,当您拨打电话时,HttpListener可能非常具体,如果您包含尾随在您注册的前缀中删除斜杠,确保在通话中包含该内容等

  • 当您尝试点击计算机时 - 您使用的是哪个地址:EC2弹性IP地址,EC2公共DNS,您已经路由到该计算机的某些DNS名称?我之前看到EC2机器在重新启动后更改了公共IP / DNS,也许你的机器已经改变了?

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