Кажется, не может исправить «Протокол net.msmq не имеет зарегистрированной реализации типа HostedTransportConfiguration». - PullRequest
3 голосов
/ 04 апреля 2011

Я работаю в 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, поэтому я не знаю, какую уместную информацию я мог бы опустить; пожалуйста, дайте мне знать, что я пропустил.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2011

Разобрался: не уверен, что испортилось, но оказывается, что удаление, а затем переустановка WCF Non-HTTP Activation это исправило.

0 голосов
/ 22 февраля 2013

Если вы размещаете службу MSMQ / WCF в IIS, вы должны указать IIS разрешить протокол net.msmq.Он находится в расширенных настройках приложения или сайта, на котором вы размещаете сервис.

...