Служба WCF заблокирована брандмауэром Windows

У меня есть служба WCF с использованием HttpBinding. Служба работает в процессе самообслуживания (служба Windows), и этот процесс находится в списке исключений брандмауэра Windows.

Если брандмауэр активен, и я пытаюсь получить доступ к службе с помощью клиента C # или Internet Explorer, служба не отвечает. Но если брандмауэр отключен, соединение работает как шарм.

Есть ли у кого-нибудь истечение срока действия с WCF и брандмауэром Windows? Проблема возникла на 64-битной Windows 7. Другую ОС еще не пробовал.

Что я должен сделать, чтобы это работало с активным брандмауэром?

С уважением Майкл

РЕДАКТИРОВАТЬ: Я нашел подсказку, что http.sys нужно добавить в список исключений брандмауэра, поскольку собственный хостинг wcf использует http.sys. Любые советы, как это решить?

РЕДАКТИРОВАТЬ: Я попытался открыть весь порт прослушивания вручную, что тоже работает, но это не вариант, потому что я не знаю их заранее.


person Michael Stoll    schedule 09.06.2010    source источник
comment
попытаться открыть порт, который использует служба? то есть порт 80, 8080 или все, что вы настроили. Поскольку он использует обычный http, я не вижу проблемы :(   -  person KTrum    schedule 10.06.2010
comment
Я просто попробовал это, и это работает. Но для обеспечения простого пользовательского опыта это не вариант в производственной среде. (Похоже, порт изменен ...)   -  person Michael Stoll    schedule 10.06.2010
comment
Странно звучит, что порт поменяли? Вы используете IIS для публикации службы? Я предполагаю, что вам придется выполнить процедуру, которая проверяет, какой порт сейчас использует служба, и программно открывает этот порт в брандмауэре, если это вообще возможно. Если порт закрыт в брандмауэре, вы, вероятно, не сможете получить доступ к службе.   -  person KTrum    schedule 10.06.2010
comment
Межсетевой экран настраивается программой установки приложения. На данный момент я не знаю, какой порт будет использовать служба, возможно, пользователь изменит настройку по умолчанию. Поэтому мне нужно открыть брандмауэр на основе процессов, а не портов. Услуга предоставляется самостоятельно (без IIS).   -  person Michael Stoll    schedule 10.06.2010


Ответы (2)


Прочтите статью MSDN Настройка HTTP и HTTPS .

person sdanelson    schedule 30.11.2010
comment
Наконец ... Я не уверен, что это суть вашего ответа, но в статье говорится, что: Самостоятельная HTTP-адресация для WCF не интегрирована в персональный брандмауэр Windows. В конфигурацию брандмауэра необходимо добавить исключение, чтобы разрешить входящие соединения с использованием определенного URL-адреса. Я думаю, что «исключение» - это исключение порта (а не процесс). По крайней мере, это мой опыт. - person Michael Stoll; 30.11.2010

Насколько мне известно, добавление собственного процесса службы WCF в брандмауэр не работает, потому что это не тот процесс, который принимает входящие вызовы, он работает только в том случае, если

  1. добавить сервисный порт в исключение глобального порта
  2. добавить процесс входящего демона WCF для обработки исключения, я не уверен насчет http, но для привязок net.tcp вам понадобится $ FrameworkDir / SMSvcHost.exe вместо вашего процесса.
person Yuan    schedule 18.04.2011