Подтвердить что ты не робот

Доступ к системе очереди сообщений отклонен

Я пытаюсь получить сообщение о очереди с моего хоста, пытаясь получить сообщение, которое я получаю "Доступ к системе очереди сообщений отклонен". сообщение. Не знаю, как решить эту проблему. Я использую Windows 7 как клиентскую систему, а сервер - это сервер Windows 2008 R2

4b9b3361

Ответ 1

Я столкнулся с тем же вопросом, который пытался написать в MSMQ через ASP.NET(Windows 7). Я добавил "Получить сообщение" "Разрешение Peek Message" и "Отправить сообщение", и теперь он работает правильно. Если вы используете это через ASP.NET, то вы, вероятно, находитесь в учетной записи IIS_IUSRS.

Ответ 3

В моем случае очереди MSMQ принадлежали моей собственной учетной записи пользователя Windows (локальный администратор), потому что они были созданы из запуска консольного приложения из Visual Studio в режиме администратора.

Мое веб-приложение работает как NETWORK SERVICE, которое порождает

Доступ к системе очереди сообщений отклонен

ошибка.

Я исправил это, предоставив NETWORK SERVICE полный контроль:

Управление компьютером > Службы и приложения > Очередь сообщений > Частные вопросы > Правая кнопка мыши > Свойствa > Безопасность

Перезапустите службу MSMQ и IIS:

NET STOP MSMQ
NET START MSMQ
IISRESET

Ответ 4

Есть много причин для этой ошибки. Во-первых, это может быть безопасность. Вы должны убедиться, что учетная запись, под которой работает ваше приложение, имеет доступ для чтения/записи в очередь (или с высоким уровнем разрешений, который вам нужен).

Во-вторых, убедитесь, что если очередь транзакционная, вы используете для нее правильный режим транзакции. Или, альтернативно, если очередь не является транзакционной, вы не пытаетесь передать ей режим транзакции при чтении или записи.

Ответ 5

Для нас это потому, что тестовая программа создала очередь...

Решение: удалите очередь и позвольте ей воссоздать правильные процессы, запущенные под правильными учетными данными.

Ответ 6

Server2008:

  • Управление Panel->Administration Tools->Computer Management.

  • В Computer Management->Services and Applications->Message Queuing->Private Queues.

  • Щелкните правой кнопкой мыши [UrQueueName] -> Properties -> Security
    • Установите всех в полный доступ
    • Установите ANONYMOUS LOGON для полного контроля.
  • В компьютере Management -> Services
    • Служба очереди повторных сообщений.

В Windows 7 (Клиент): Создайте очередь сообщений Rc с помощью FormatName:DIRECT=OS:MachineName\private$\UrQueueName

Пример:

rcmq = new System.Messaging.MessageQueue(string.Format("FormatName:DIRECT=OS:{0}\\private$\\{1}", rcMachineName,rcQueueName)); 

Ответ 7

Это может превратиться в неприятную проблему. В моем сценарии исключение было брошено на BeginReceive(). У меня была существующая очередь сообщений, которая была создана приложением .Net 2.0, и я пытался использовать ее в другом приложении, которое выполнялось на .Net 4.0. Решение состояло в том, чтобы удалить MSMQ (расположенный в C:\Windows\System32\msmq\storage\lqs) и воссоздать его с .Net 4.0.

Ответ 8

В нашем случае изменение идентификатора пула приложений веб-службы, вызывающего Peek MSMQ, помогло с этой проблемой, которая началась после миграции сервера.

Нам пришлось изменить идентификатор пула приложений с "ApplicationPoolIdentity" на "NetworkService". Он работал потом.

Ответ 9

Это сработало для нас: Менеджер сервера → Функции → Очередь сообщений → Щелкните правой кнопкой мыши → Свойства → Безопасность сервера

Отменить проверку: "Отключить вызовы RPC без аутентификации"

Ответ 10

Благодаря этому сообщению я смог удалить проблему "Отказано в доступе": https://codifying.wordpress.com/2012/04/16/msmq-solving-access-denied-errors-for-private-queues/

Исходная задача

... разочаровывает, очередь указана в разделе "Управление сервером" в "Частные очереди", но я не имел возможности:

  • Удалить = > Разрешен отказ
  • Изменить разрешение безопасности = > Отказано в доступе
  • Просмотр оставшегося сообщения в очереди = > Отказано в доступе

Решение

  • Создайте очередь вручную (используется позже), позвоните ей FA1
  • Закрыть услуги: Очередь сообщений (+ Адаптер прослушивателя для Net.Msmq)
  • Затем перейдите к System32/msmq/storage/lqs
  • Найдите последний файл для FA1 (проверьте правильность файла, каждый файл здесь можно открыть с помощью блокнота), а затем скопируйте значение атрибута Security
  • Найдите файл, связанный с очередью проблем, вставьте в него значение, скопированное на предыдущем шаге.
  • Удалить файл, связанный с FA1
  • Откройте две ранее закрытые службы
  • Перейдите в Диспетчер серверов

Сообщение об ошибке больше не должно появляться

Но... у вас может возникнуть другая проблема с вашим программным обеспечением при попытке прочитать/подключиться к этой очереди, он будет жаловаться, что у него недостаточно привилегий, поэтому последний шаг - перейти к расширенным свойствам этой очереди и установите полный доступ к управлению всем (ну, может быть, вы укажете конкретного пользователя, но это то, что я сделал, чтобы гарантировать, что я не заблокирован на своем собственном dev-сервере).

Ответ 11

Пожалуйста, войдите в свой диспетчер серверов и проверьте свойства очереди сообщений, которым назначены "отправить сообщение", "сообщение peek" и другие необходимые привилегии для пользователя IIS или всех.