1

такой же ситуации, как этот вопрос, HttpListener not receiving remote requests, even with the firewall down and all prefixes registered, а именно:Round # 2: HttpListener не получает вне просит

  • HttpListener только получают запросы от одной и той же машины
  • приложение работает на экземпляре Windows, EC2 (такая же спецификация, как и у другого вопроса)
  • Используемые порты зарегистрированы и открыты в брандмауэре (я также временно снял брандмауэр, чтобы убедиться, что это не проблема)
  • Префикс, который я использую, - это http : // *: 8080/

Отличия от другого вопроса:

  • группы безопасности на EC2 правильно сконфигурированной
  • Он не принимал запросы извне, пока (насколько я знаю) сегодня, и я не о каких-либо изменений в системе (но я открыт для всех идей, вообще)

Дополнительная информация:

  • Экземпляр и система EC2 проходят все проверки состояния
  • Я перезапустил экземпляр; без изменений
  • Код статуса http, отправленный обратно (не из моего серверного приложения, из системы) на удаленный клиент, равен 503 (услуга недоступна)
  • Я проверил и перепроверял, что URL-адрес правильный (у меня есть упругая IP-адрес, и я с помощью открытого DNS экземпляра в URL)
  • Я выбежала NetStat, чтобы убедиться, что порт не используется другими процессами

Любые идеи для вещей, чтобы проверить или попробовать это полностью приветствуется; Я довольно много бежать из идей ...

+0

Можете ли вы разместить часть кода? Есть вероятность, что вы слушаете только внутренний интерфейс ('localhost'), и поэтому удаленные запросы не проходят. – yamen

+0

К сожалению, я не могу опубликовать код из-за NDA, но он прослушивает http: // *: 8080/- это то, что вы рекомендовали проверить или что-то еще? – user1309279

+0

Если он отвечает на локальные запросы, но не на удаленные запросы, проблема может быть связана с брандмауэром или другим устройством безопасности, а не с HttpListener. –

ответ

1

Пара мыслей, некоторые вы, вероятно, уже проверен:

  • Убедитесь, что вы все еще можете нажать слушатель локально на машине - просто вынесу что-то не так с кодом iteself

  • Убедитесь, что нет ничего другого, запущенные на этом порту на этой машине

  • Проверьте средство просмотра событий - любые ошибки в то, что может применяться? Другие события? Недавнее обновление Windows - что-нибудь?

  • Попробуйте другой порт - чтобы исключить конфликты портов, попробуйте другой один

  • Убедитесь, что вы связаны с префиксом: HTTP: // *: {ваш-порт - # - здесь}/- также, когда вы делаете свой вызов, HttpListener может быть очень специфичным, если вы включаете трейлинг-косую черту в префиксе, который вы регистрируете, обязательно включите его в свой вызов и т. д.

  • Когда вы пытаетесь поразить машину - какой адрес вы используете: EC2 Elastic IP-адрес, общедоступные DNS-системы EC2, какое-то DNS-имя, которое вы направили на эту машину?Я видел, как машины EC2 меняют общедоступный IP/DNS после перезагрузки, возможно, ваш изменился?

Это все, о чем я могу думать сейчас. Удачи.

+0

Я проверил большинство из этих вещей, но отличный контрольный список, тем не менее! Я не пробовал другие порты, потому что не было никаких других процессов, использующих 8080 каждый раз, когда я запускал netstat, но я следил за вашими предложениями и добавлял порты 8081 и 8082, и как локальный, так и удаленный трафик добирался до слушателя через них. Любые идеи относительно того, почему он внезапно перестали работать на 8080, хотя он зарегистрирован, открыт в брандмауэре, похоже, нет конфликтов и т. Д.? – user1309279

+0

Попробуйте запустить netstat, чтобы узнать, какие порты используются: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netstat.mspx?mfr=true – brendan

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 и спасите себе головную боль.

+0

Какая команда была использована для генерации отчета выше? –

+0

'netsh http show urlacl' – Max

Смежные вопросы