Как получить доступ к частной очереди MSMQ, созданной учетной записью NETWORK SERVICE? - PullRequest
4 голосов
/ 29 апреля 2011

Мое приложение состоит из двух частей: веб-службы, которая отправляет очереди в частную очередь MSMQ, и службы Windows, которая принимает очереди и вставляет их в базу данных.На моей машине разработки все в порядке, но когда я развернул их на сервере, возникла проблема с разрешениями:

  • Веб-служба, работающая внутри IIS, использует учетную запись NETWORK SERVICE для создания очереди.
  • сама служба запускается от имени администратора и затем не может получить доступ к очереди.

Я попытался добавить разрешения для учетной записи администратора, но не смог с ошибкой «Доступ запрещен».Я даже не могу удалить эти очереди.

Как я могу это исправить?Большое спасибо

Ответы [ 2 ]

5 голосов
/ 29 апреля 2011

Когда веб-служба создает очередь, она должна убедиться, что у нее есть соответствующие права доступа. Если вы используете .NET, вы можете использовать метод MessageQueue.SetPermissions , чтобы изменить разрешения для очереди после ее создания.

Этот код C # создаст новую очередь сообщений и даст локальной группе администраторов полный контроль над ней:

var messageQueue = MessageQueue.Create(path, true);
messageQueue.SetPermissions(
  "Administrators",
  MessageQueueAccessRights.FullControl
);
1 голос
/ 11 июля 2012

Добавьте права NETWORK SERVICE и права администратора для обоих. во время создания очереди.

и если вы хотите удалить очередь, выполните этот шаг ...

https://stackoverflow.com/a/11430249/672891

...