Автоматическая активация службы WCF net.msmq

У меня есть службы WCF, которые используют протокол net.msmq, размещенный в IIS 7. Моя проблема заключается в том, что службы не активируются при появлении нового сообщения в очереди, вы должны сначала физически просмотреть службы, прежде чем они начнут собирать любые сообщения.

Есть ли способ активировать эти службы?

Заранее благодарим за помощь

С уважением, Brian

Ответы

Ответ 1

Там действительно хорошая серия из трех частей о том, как запустить WCF, MSMQ и IIS и хорошо сыграть в блоге Tom Hollander:

Может быть, это поможет? MSMQ, размещенный в IIS7, обязательно должен автоматически собирать сообщения WCF, если все настроено правильно.

Есть несколько настроек, которые не указаны из коробки - см. часть 1. Возможно, вам придется добавить и включить дополнительные функции Windows, и вам может понадобиться запустить инструмент appcmd.exe для настройки WAS (Windows Activation Server, часть IIS7) для автоматической обработки запросов, отличных от http.

Марк

Ответ 2

Я знаю это старое сообщение, но в случае, если кто-то еще придет с этой проблемой...

Если служба не активируется после завершения пула приложений, это, скорее всего, связано с тем, что имя очереди не соответствует URI службы, поэтому WAS не знает, какое приложение будет активировано.

Так, например, если вы создаете приложение "Услуги" на веб-сайте по умолчанию и имеете имя FirstService.svc, имя очереди должно быть private $\ Services/FirstService.svc

[Изменить: имя очереди должно содержать имя приложения также во множественном числе]

Ответ 3

Это связано с тем, что при использовании MSMQ WAS не будет автоматически активирован или не прогревается. Решения должны взглянуть на модуль IIS 7 Warm Up или иметь что-то вроде балансировки нагрузки для вашего обслуживания (мы используем устройство F5 сделать это). Обновление - вот ссылка для Инициализация приложений IIS 8

Ответ 4

Я обнаружил, что в Windows 7 с IIS 7.5 и .NET 4.0 служба NetMsmqActivator отключена и остановлена ​​по умолчанию. Вам нужно включить его и запустить.

Кроме того, очередь должна принимать "Получать сообщение" и "Сообщение Peek" для учетной записи, используемой пулом приложений, и для учетной записи, используемой NetMsmqActivator. При установке по умолчанию вы можете использовать IIS APPPOOL\ASP.NET v4.0 (вам нужно ввести его: 3 'P's, позаботьтесь о пробелах) и NETWORK SERVICE.

Ответ 5

Мы наблюдаем эту проблему уже более месяца в системе с этими свойствами:

  • Смешанные службы, как http, так и msmq, размещенные в WAS на IIS7.5
  • Протокол msmq: net.msmq
  • услуги, которые не выполняются на корневом веб-сайте, но в приложении под

Мы выполняем все рекомендации и решения проблем, связанные с: * Настройка протокола на уровне iis и приложения. * Именование имен в очереди * параметры безопасности очереди, службы windows и iis

Но проблема продолжалась. Наше решение заключалось в следующем: http://www.daczkowski.net/tag/wcf/ То есть, чтобы установить appfabric на наш iis и настроить службы для автозапуска.

Сама проблема довольно сложно определить полностью, что мы можем сказать только потому, что "иногда служба перестает обрабатывать из очереди"

Ответ 6

Мое решение - это смешение некоторых ответов здесь. Моя очередь имеет аутентификацию, поэтому некоторые шаги могут не понадобиться, если аутентификация не используется.

Ниже приведены шаги, которые я выполняю, чтобы включить его в окно 2012:

1) Установите службы активации без доступа к сети WAP (https://msdn.microsoft.com/en-us/library/ms731053(v=vs.110).aspx)

2) Создайте очередь с тем же именем, что и приложение IIS, например private$/<WCF application>/myservice.svc.

Служба Net.Msmq Listener Adapter будет пытаться сопоставить очередь и имя приложения WCF в IIS, как указано VdesmedT.

3) Включить протоколы на сайте и в приложении.

Сначала создайте привязку:

% windir%\system32\inetsrv\appcmd.exe установить сайт "Веб-сайт по умолчанию". - + привязок [протокол = 'net.tcp', bindingInformation = '808: *']

Связывание сайтов должно выглядеть следующим образом: введите описание изображения здесь

Затем включите протокол net.msmq для сайта

% windir%\system32\inetsrv\appcmd.exe set config -section: system.applicationHost/sites "/[ name=" Веб-сайт по умолчанию "]. [path = '/']. enabledProtocols": "http, net.msmq" /commit: apphost

Эта команда будет перезаписывать протоколы, поэтому, если у вас есть более, чем http enable, вам нужно добавить ее в командную строку.

В Advanced Settins вы должны увидеть следующее:

введите описание изображения здесь

И, наконец, включите протокол net.msmq для приложения.

% windir%\system32\inetsrv\appcmd.exe установить приложение "Веб-сайт по умолчанию /" /enabledProtocols:http,net.tcp

Экран "Дополнительные параметры" для приложения должен показывать то же самое, что и в дополнительных настройках для сайта, в строке разрешенных протоколов.

4) Предоставьте разрешения для очереди для приложения IIS для чтения, просмотра и удаления, получения свойств и установки свойств. Учетная запись по умолчанию - IIS Apppool\DefaulApp

5) Предоставьте разрешение peek на очередь для сервисов Net.Msmq Listener Adapter (по умолчанию Network Service)

Не нужно, но мне пришлось перезагружать после изменения разрешений.

Проверка:

  • Чтобы проверить, правильно ли настроен WCF, просто используйте просмотр WCF приложение для его активации. Любые сообщения в очереди должны обрабатываться.

  • Чтобы проверить, активирует ли WAS приложение WCF, переустановите пул приложений и отправьте новое сообщение. Если WAS это должен быть процесс немедленно.

Ответ 7

Просто установите для приложения "Автозапуск" значение "Включено" в IIS