2013-07-25 10 views
3

Одна из программ, над которыми я работаю, имеет встроенный веб-сервер, предназначенный только для обработки очень специфических запросов (статических). В отличие от TcpListener, когда HttpListener запущен, пользователю НЕ предлагается разрешить, в каких сетях разрешено прослушивать программу. Это вызывает большую проблему, так как программе необходимо прослушивать удаленные подключения, которые теперь запрещены брандмауэром Windows.C# HttpListener и брандмауэр Windows

Если я создаю новое правило в брандмауэре Windows и выбираю свою программу в разделе «Программы и службы», окна все равно будут отказывать во всех удаленных подключениях ... но если я выберу «Все программы, соответствующие указанным условиям», то он работает отлично. Почему мой вопрос? Почему брандмауэр отклоняет мое приложение, когда оно специально выбрано? И почему пользователь не получает запрос с экраном безопасности брандмауэра, как с другими Listeners?

+0

Вы добавляете правильную версию (отладка/выпуск) в эту конфигурацию. Не уверен, что это имеет значение или нет, но может быть основано на местоположении. – ChrisBint

+0

Я использую версию установленного выпуска (установленную с установщиком проекта развертывания) – Wilson212

+0

Вы пытались открыть порт напрямую? –

ответ

9

Это потому, что HttpListener построен поверх http.sys, который будет прослушивать порт, указанный вами от имени вашей программы.

Я не нашел способ, чтобы позволить только одну программу, используя HttpListener через брандмауэр Windows, но вы можете захотеть ограничить правило входящего трафика к компонентам системы только:

  • Ввод печатая системы в поле «Эта программа» в «программе и услуг» вкладка
  • Выбор типа протокола TCP во вкладке «Протоколы и порты» вместе с портом вы будете слушать на
+2

Работал хорошо для меня. Как вы определили, что название программы должно быть «системой»? – Grezzo

+0

Я тоже хотел бы узнать это;) – burtonium76

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