Msmq и WCF Сервис - PullRequest
       11

Msmq и WCF Сервис

7 голосов
/ 28 января 2010

Я создал службу WCF, используя привязку NetMsmq, для которой я создал личную очередь на своем компьютере и выполнил проект. Это работает нормально, и моя служба WCF запускается и получает доступ к сообщению, используя очередь в среде отладки. Теперь я хотел разместить службу с помощью службы Windows, и для этого я также создал новый проект и установщик Windows (эта служба работает под учетной записью локальной системы). Затем я попытался установить эту службу Windows с помощью команды InstallUtil через командную строку. Когда происходит установка и во время открытия хоста службы, я получаю исключение:

There was an error opening the queue. Ensure that MSMQ is installed and running, the queue exists and has proper authorization to be read from. The inner exception may contain additional information. 
Inner Exception System.ServiceModel.MsmqException: An error occurred while opening the queue:Access is denied. (-1072824283, 0xc00e0025). The  message cannot be sent or received from the queue. Ensure that MSMQ is installed and running. Also ensure that the queue is available to open with the required access mode and authorization.
   at System.ServiceModel.Channels.MsmqQueue.OpenQueue()
   at System.ServiceModel.Channels.MsmqQueue.GetHandle()
   at System.ServiceModel.Channels.MsmqQueue.SupportsAccessMode(String formatName, Int32 accessType, MsmqException& msmqException)

Может ли кто-нибудь предложить возможное решение вышеуказанной проблемы? Я пропускаю какие-либо разрешения, которые нужно установить для очереди, а также службы Windows, если да, то можете ли вы предложить, где эти разрешения должны быть добавлены?

Ответы [ 4 ]

7 голосов
/ 28 января 2010

У Тома Холландера была отличная серия блогов из трех частей, посвященная использованию MSMQ от WCF, которую стоит проверить!

Может быть, вы найдете решение вашей проблемы, о котором говорилось где-то!

4 голосов
/ 28 января 2010

Да, похоже, проблема с разрешениями.

Щелкните правой кнопкой мыши свою личную очередь в Диспетчере серверов и выберите Свойства. Перейдите на вкладку «Безопасность» и убедитесь, что у вас есть необходимые разрешения для вашей учетной записи локальной системы.

Это также подтверждается в статье Николаса Аллена: Диагностика общих ошибок очереди , где автор определяет код ошибки 0xC00E0025 как проблему с разрешениями.

2 голосов
/ 15 июля 2010

Я столкнулся с той же проблемой, вот решение.

Щелкните правой кнопкой мыши «Мой компьютер» -> «Управление». В окне «Управление компьютером» выберите «Службы и приложения -> Очередь сообщений -> очередь», выберите очередь и получите доступ к свойствам. Добавьте пользователя, запускающего приложение WCF, и предоставьте полный доступ. Это должно решить проблему.

0 голосов
/ 01 июня 2016

Может быть, служба не может найти свою очередь. Имя очереди должно точно соответствовать адресу конечной точки.

Пример:

net.msmq: //localhost/private/wf.listener_srv/service.svc

* +1007 *

указывает на локальную очередь

частные $ \ wf.listener_srv \ service.svc

Если имя очереди и конечная точка соответствуют друг другу, то похоже, что учетные данные, определенные в IIS pool, не предоставляют доступ к очереди.

...