Доступ MSMQ запрещен при сбросе разрешений - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь инициализировать частный 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.

Есть предложения, в чем может быть проблема?

...