none
Проблема доступа в MSMQ RRS feed

  • Вопрос

  • Здравствуйте, прошу помочь мне чем сможете, я не могу решить данную проблему уже около недели, облазил весь интернет.

    Я работаю в Visual Studio 2015, а именно в WCF. Сейчас пишу проект, где необходимо в сервисе использовать очереди MSMQ.

    Суть: Вся проблема заключается в непонятных ошибках доступа и делятся на 2 типа:

    1. Если я создаю очередь msmq вручную, через "Управление компьютером", то мой сервис написанный на c# видит и спокойно посылает в такие очереди сообщения, а вот при попытке достать какое-либо сообщение из такой очереди выдает исключение типа " System.Messaging.MessageQueueException {"Доступ к системе очередей сообщений запрещен."}. "

    2. Если очередь создавать через программный код, то все отлично работает, но при попытке изменить/удалить очередь через "Управление компьютером" появляется ошибка "Отказано в доступе".

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

    Собственно обращение к очередям у меня происходит самым простым образом:

    //создание очереди и посылка сообщения в очередь

    if (!MessageQueue.Exists("Path"))
              MessageQueue.Create("Path");
    var ServiceQueue = new MessageQueue("Path");
    ServiceQueue.Send("Message");

    //Изъятие первого сообщения из очереди, с указанием сериализации через Xml

    var ServiceQueue= new MessageQueue("Path");
                ServiceQueue.Formatter = new XmlMessageFormatter(
                             new String[] {"System.String"});
    Message queueMessage = ServiceQueue.Receive();

    P.S. Пока работал заметил одну интересную вещь: Есл ия вручную создам очередь и открою ВСЕМ существующим пользователям ПОЛНЫЕ права, то все работает. Значит ошибка именно в правах, а как это изменить (особенно когда вижуал студия сама создает очередь) я не знаю.

    • Изменено Omokage 19 января 2016 г. 9:43
    19 января 2016 г. 9:15

Все ответы

  • Добрый день.

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

    19 января 2016 г. 10:04
    Отвечающий
  • Если известно как, то я был бы не прочь узнать, как задать программно права.

    Теперь у меня есть 2 вопроса:

    1) Как такое может быть, что бы я не могу просматривать, изменять и удалять очереди, которые создает студия, но могу полностью изменять права очередей, которые я создал вручную. Отсюда вытекает второй вопрос.

    2) Почему от одного и того же пользователя, но при разных способах создаются разные по правам доступа очереди? Как вобще пользователь может создать то, чем он не сможет управлять. Что это за глупость? Какой то баг?

    При этом, я имею права доступа "администратор", по этому выше меня может быть только система. Получается вижуал студия создает очереди от имени системы, а не от моего имени. Возможно ли это из-за того, что очередь создается через сервис WCF? Сервисы на сколько я знаю считаются системным ресурсом.
    • Изменено Omokage 20 января 2016 г. 7:03
    20 января 2016 г. 6:58