restart / iisreset отключает протокол NET.TCP? - PullRequest
6 голосов
/ 16 июня 2010

Я размещаю службу WCF в IIS7 на Windows Server 08, sp2. Служба размещается как собственный веб-сайт и предоставляется через конечную точку NET.TCP. Служба работает отлично, пока не будет выполнена команда restart / iisreset.

После перезапуска или iisreset, когда я звоню в сервис, я получаю следующую ошибку: 'System.ServiceModel.EndpointNotFoundException: сообщение не может быть отправлено, поскольку служба по адресу конечной точки' net.tcp: // [website] / [service_name] .svc 'недоступна для протокола адреса ..'

Журнал событий сервера показывает следующую ошибку: «Произошла ошибка при попытке прочитать и создать экземпляр настроенного ProcessHandlerType. Исключение: System.ArgumentException Сообщение: неизвестный идентификатор протокола «NET.TCP». StackTrace: at System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) '

Вопрос : Как это исправить? Почему протокол NET.TCP отключается после iisreset? Это ошибка? Я что-то пропустил?

Подробности настройки IIS: - Сервер 08 и 08 R2 - Привязки: http, NET.TCP (808: *) - EnabledProtols: http, NET.TCP. - Идентификатор appPool сайта установлен для конкретного пользователя.

Пример кода доступен здесь: http://drop.io/wcfTcpSampleService

Спасибо

Ответы [ 4 ]

9 голосов
/ 29 июня 2010

решаемая.Проблема в чувствительности к регистру.В AdvancedSettings веб-приложения поле EnabledProtocols должно быть в нижнем регистре, т.е. «net.tcp» (я только что узнал об этом из поддержки MS).

Я предположил (по глупости), что «NET.TCP»верхний регистр из-за описания поля EnabledProtocols («... добавить эти значения, такие как NET.TCP ...»).

Странная, неизвестная проблема - почему он будет работать с 'NET.TCP 'в первый раз, но это еще одна проблема.

Спасибо за все, что вы помогаете всем.

1 голос
/ 28 июня 2010

Можно ли использовать разные порты для протоколов NET.TCP и HTTP?

Обновление

На моем ПК все работает как надо, и я попытался перезагрузить и iisreset. Там же я загрузил ваш проект, включая двоичные файлы (используется Visual Web Developer 2010 Express) и снимок экрана с настройками IIS. Для пула приложений установлен интегрированный .NET 4.0.

iis7 http://www.freeimagehosting.net/uploads/1a727d66ce.png

0 голосов
/ 29 июня 2010

Какие версии .NET у вас установлены (или были установлены)?

У меня была очень похожая проблема при переходе с .NET 4 RC на RTM, поскольку службы TCP использовали dll из установки RC (которой больше не было), что приводило к остановке служб.

0 голосов
/ 26 июня 2010

Вам действительно нужно сделать полный IISRESET? Я считаю, что «современный» рекомендуемый метод при необходимости полного перезапуска приложения, размещенного в Интернете, заключается в перезапуске пула приложений следующим образом: iisapp /a <App_Pool_ID> /r (Windows 2003) или appcmd recycle apppool /apppool.name:<App_Pool_Name> (Windows 2008).

...