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

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

Ответы на вопрос(11)

которая вызывает Peek MSMQ, помогло с этой проблемой, которая начала возникать после миграции сервера.

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

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

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

 Glade Mellor10 февр. 2016 г., 17:17
В разделе «Управление компьютером» (щелкните правой кнопкой мыши «Компьютер» в меню «Пуск» и выберите «Управление»), перейдите в раздел «Очередь сообщений», щелкните правой кнопкой мыши нужное имя очереди и выберите «Свойства» -> нажмите «Безопасность». вкладку, и вы можете управлять разрешениями там.
 emirhosseini05 июн. 2018 г., 19:19
У меня есть эти настройки разрешений, и он по-прежнему выдает эту ошибку
 Chirag K07 мар. 2019 г., 14:03
@emirhosseini Если безопасность не является для вас большой проблемой, вы можете следить за ответом saille, в котором он не проверял: «Отключить неаутентифицированные вызовы RPC»
 hofnarwillie10 февр. 2016 г., 14:28
Как вы добавляете эти разрешения?

контрольPanel->Administration Tools->Computer Management.

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

Правый клик[UrQueueName] -> Properties -> SecurityУстановите все на полный контрольУстановите АНОНИМНЫЙ ЛОГОН на Полный доступ.В компьютере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)); 

Функции -> Очередь сообщений -> Правый клик -> Свойства -> Безопасность сервера

Снимите флажок: «Отключить неаутентифицированные вызовы RPC»

то, как упоминалось в kprobst, основным виновником являются права доступа.

Вы также можете получить другие причины:

Не удается прочитать из удаленных очередей MSMQ

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

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

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

 John Breakwell26 мар. 2012 г., 23:43
Транзакционный / нетранзакционный не будет создавать ошибки Отказано в доступе. Вы должны получить специфичные для транзакции ошибки - 0xC00E0050 (MQ_ERROR_TRANSACTION_USAGE).
 kprobst27 мар. 2012 г., 00:07
@JohnBreakwell спасибо за разъяснения, я немного погуглил, и это подошло. Мне было бы странно, что это так, но я подумал, что упомяну об этом в любом случае. Основной виновник почти всегда разрешения.

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

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

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

ошибка.

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

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

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

NET STOP MSMQ
NET START MSMQ
IISRESET

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

 Houman02 сент. 2014 г., 05:53
@JohnBreakwell Нет, обновление приложений с .Net 2.0 до 4.0 стало интересной практикой. Мы столкнулись с новыми проблемами, которых мы никогда не знали раньше.
 John Breakwell29 авг. 2014 г., 15:02
Это интересно. Я так понимаю, у вас больше нет копий проблемных файлов LQS?

оступе»: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Откройте два ранее закрытых сервисаПерейти к диспетчеру сервера

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

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

 Van30 нояб. 2018 г., 20:59
Это правильный ответ. Единственное дополнение - вы хотите, чтобы копия файла FA1 была помещена обратно в папку, чтобы впоследствии вы могли удалить временную очередь FA1 в качестве последнего шага.

Ваш ответ на вопрос