Я пытаюсь инициализировать частный MSMQ и установить разрешения на Для всех , используя код:
string queuePath = "test_queue";
if (!MessageQueue.Exists(queuePath))
{
try
{
MessageQueue.Create(queuePath, true);
}
catch (MessageQueueException exc) when (exc.MessageQueueErrorCode == MessageQueueErrorCode.QueueExists)
{
}
}
_messageQueue = new MessageQueue(queuePath, true, true, QueueAccessMode.Receive)
{
Formatter = new XmlMessageFormatter(new Type[] { typeof(String) })
};
_messageQueue.ResetPermissions(); //Here is where I get exception
AccessControlList permissions = new AccessControlList()
{
new AccessControlEntry(new Trustee("Everyone"),
GenericAccessRights.All,
StandardAccessRights.All,
AccessControlEntryType.Allow)
};
_messageQueue.SetPermissions(permissions);
Исключение, которое я получаю в строке _messageQueue.ResetPermissions()
:
Starting monitoring failed, an unexpected exception occured: System.Messaging.MessageQueueException (0x80004005): Access to Message Queuing system is denied.
Значит, у меня нет доступа к этой частной очереди. Я не могу воспроизвести эту проблему на моей локальной машине разработчика, но она воспроизводима на внешних машинах. Кроме того, он воспроизводится только в первый раз, когда создается очередь, когда я вручную удаляю test_queue
из Управление компьютером после возникновения этой проблемы и снова запускаю программу, я больше не получаю исключение System.Messaging.MessageQueueException
.
Есть предложения, в чем может быть проблема?