1

Я не уверен, является ли это проблемой Windows или проблемой .NET (то есть принадлежит ли она здесь на SO), но я написал небольшую программу HTTP-сервера на C # (с использованием класса .NET HttpListner), которая прекрасно работает по большей части, но брандмауэр Windows, похоже, отказывается пропускать подключения к нему из чего-либо, кроме localhost. Я добавил исключения для TCP и UDP в разделе "Inbound Rules" настроек брандмауэра, по сути дублируя существующие правила для других HTTP-сервисов, которые работают нормально (например, foo_httpcontrol). В частности, я добавил отдельные правила для соединений TCP и UDP, охватывающие все порты, специфичные для исполняемого файла, который я запускаю.

Когда брандмауэр Windows отключен, проблем нет, но если я его включу, соединение просто отключится.

2 ответа2

1

Если это сервер, я думаю, вам также нужно разрешить исходящие соединения для него. Вы сказали, что разрешаете входящие подключения к серверу (вы можете подключиться к нему), но вы не создали правило для исходящих подключений (оно не может ответить) и время ожидания подключения истекло.

Вы также можете попробовать Windows Firewall Control для отладки этого:

https://binisoft.org/wfc

В нем есть окно, где отображаются последние заблокированные соединения от брандмауэра Windows. Если вы проверите этот журнал, вы сможете увидеть, что недавно было заблокировано и что необходимо разрешить. Надеюсь, это поможет.

0

HttpListener использует Http.sys. Смотрите эту статью MSDN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .