Я размещаю сервис WCF в IIS7 на Windows Server 08, sp2. Сервис размещается как его собственный сайт и подвергается через конечную точку NET.TCP. Сервис работает отлично, пока команда restart/iisreset не дается.
После перезапуска или iisreset, когда я делаю любой служебный вызов, я получаю следующую ошибку: 'Система. ServiceModel. EndpointNotFoundException: сообщение не могло быть диспетчеризировано, потому что сервис в сети tcp: 'адреса конечной точки//[веб-сайт] / [service_name] .svc' недоступен протоколу адреса..'
Журнал событий сервера показывает следующую ошибку: 'Ошибка произошла при попытке считать и инстанцировать настроенного ProcessHandlerType. Исключение: Система. Сообщение ArgumentException: ИДЕНТИФИКАТОР Неизвестного протокола 'NET.TCP'. StackTrace: в System. Сеть. Хостинг. ProcessHost. StartProcessProtocolListenerChannel (Протоколируемая строка, IListenerChannelCallback listenerChannelCallback)'
Вопрос: Как я фиксирую это? Почему протокол NET.TCP отключен после iisreset? Действительно ли это - ошибка? Я пропускаю некоторую конфигурацию?
Детали установки IIS: - сервер 08 и 08 R2 - Привязка: http, NET.TCP (808:*) - EnabledProtols: http, NET.TCP. - Идентификационные данные для appPool сайта установлены на определенного пользователя.
Пример кода, доступный здесь: http://drop.io/wcfTcpSampleService
Спасибо
Решено. Проблема в чувствительности к регистру. В AdvancedSettings веб-приложения поле EnabledProtocols должно быть в нижнем регистре, то есть «net.tcp» (я только что узнал об этом из службы поддержки MS).
Я предположил (по глупости), что «NET.TCP» должен быть в верхнем регистре из-за описания поля EnabledProtocols («... добавьте эти значения, такие как NET.TCP ...»).
Странная, неизвестная проблема заключается в том, почему он будет работать с NET.TCP в первый раз, но это уже другая проблема.
Спасибо за вашу помощь.
Можете ли вы использовать разные порты для протоколов NET.TCP и HTTP?
Update
На моем ПК все работает как надо, я пробовал и перезагрузку, и iisreset. Я загрузил туда же ваш проект, включая двоичные файлы (использовал Visual Web Developer 2010 Express), и скриншот настроек IIS. Пул приложений установлен на .NET 4.0 integrated.
Вам действительно нужно делать полный IISRESET
? Я считаю, что "современный" рекомендуемый метод при необходимости полного перезапуска веб-хостируемого приложения - это переработка пула приложений следующим образом: iisapp /a
(Windows 2003) или appcmd recycle apppool /apppool.name:
(Windows 2008).
Какие версии .NET у вас установлены (или были)?
У меня была очень похожая проблема при переходе с .NET 4 RC на RTM, поскольку службы TCP использовали dll из установки RC (которой больше не существует), вызывая остановку служб.