Win7. Самостоятельно размещенное приложение WCF .net создает неверное правило брандмауэра - PullRequest
1 голос
/ 31 марта 2011

В моем приложении .net запущена самостоятельная служба WCF.

Служба работает нормально, если брандмауэр настроен правильно.Однако правила по умолчанию, добавленные при первом запуске приложения, настроены неправильно и требуют изменений со стороны пользователя.Когда приложение впервые запускается на компьютере, оно отображает диалоговое окно «Предупреждение системы безопасности Windows» с сообщением «Брандмауэр Windows заблокировал некоторые функции этой программы» и предлагает «Разрешить доступ».Если пользователь выбирает «Разрешить доступ», Windows добавляет исключение приложения в брандмауэр.

Все вышеперечисленное поведение в точности соответствует ожиданиям и является именно тем, что я хочу.

Проблема в том, чтоПравило, добавленное в брандмауэр, неверно и не позволяет службе WCF работать правильно.В добавленном правиле «Эта программа» на вкладке «Программы и службы» свойств правила перечислены мои собственные файлы WCF.Мне это кажется подходящим.

Однако, если я изменю этот параметр на «Все программы, которые удовлетворяют указанным условиям», тогда правило будет работать нормально.

Итак, мой вопрос состоит из двух частей.

a) Почему трафик к моему приложению блокируется этим правилом, если оно правильно явно поддерживает трафик к моему EXE-файлу?

b) Как мне решить проблему?Могу ли я что-то изменить в приложении, чтобы правило без ограничений добавлялось в мой exe-файл или чтобы правильно разрешить трафик для моего exe-файла?

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 18 апреля 2011

a) поскольку не ваш exe-файл, а демон-процесс WCF принимает входящие вызовы, указав любой процесс, вы говорите, что «любой процесс», который будет прослушивать порт XXX, будет добавлен в список исключений.Таким образом, процесс deamon добавляется в список исключений.

b) вы можете добавить процесс демона wcf в список исключений или добавить порт exe-файла в список исключений.Если вы используете привязку net.tcp, deamon porcess будет $ frameworkDir / SMSvcHost.exe

...