Я работаю в Windows 7 / IIS 7.5, и у меня настроена веб-служба для использования net.msmq, но когда я пытаюсь получить доступ к службе через HTTP, я получаю следующую ошибку:
Протокол 'net.msmq' не имеет зарегистрированной реализации типа HostedTransportConfiguration.
[InvalidOperationException: The protocol 'net.msmq' does not have an implementation of HostedTransportConfiguration type registered.]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Я установил привязки http и net.msmq на сайте, на котором он находится, и включил оба протокола ("http, net.msmq") как на сайте, так и в приложении.
Я посмотрел статью Отладка недостающего типа HostedTransportConfiguration и выполнил там все команды, но ни одна из них не помогла; работает sc запрос netmsmqactivator показывает:
SERVICE_NAME: netmsmqactivator
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Пул приложений, под которым сейчас выполняется приложение, нацелен на .NET Framework v2.0, но если я изменю пул приложений на целевой .NET Framework v4.0 (и внесу соответствующие изменения в файл web.config службы для удалите дубликаты определений configSection), я могу видеть WSDL просто отлично.
Насколько мне известно, веб-сервис не предназначен для работы с .NET Framework v4.0; на самом деле он работает для моего коллеги (также работающего под управлением Windows 7), но сравнение настроек в настоящее время нецелесообразно по многим причинам.
Другое примечание, может или не может быть связано:
После попытки доступа к службе через HTTP и получения вышеуказанной ошибки, обновление службы приводит к:
Элемент с таким же ключом уже добавлен.
[ArgumentException: An item with the same key has already been added.]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +15778592
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15698937
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Для очистки требуется перезапуск пула приложений.
У меня нет опыта работы с net.msmq, поэтому я не знаю, какую уместную информацию я мог бы опустить; пожалуйста, дайте мне знать, что я пропустил.