Доступ к MSMQ запрещен - PullRequest
       11

Доступ к MSMQ запрещен

0 голосов
/ 29 августа 2009

Я пытаюсь получить доступ к очереди и получаю сообщение об ошибке отказа в доступе. Запутанная часть заключается в том, что очередь настроена таким образом, чтобы предоставить всем пользователям полный контроль, а также анонимность и имя машины $ (все три - полный контроль - это тестовая система, так что не проблема) Я могу успешно записать в очередь, но не могу Peek / Read / Receive из нее. Я нашел здесь одну статью, в которой предлагалось использовать метод FormatName, но, к сожалению, я уже делаю это.

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

Моя платформа - Vista x64, а сервер - 2008 (не R2).

Код выглядит так:

    Do While Not m_boolCancel

        '**Code dies on this line**
        l_ar = m_mq.BeginPeek

        'block thread till message arrived or shutdown is signalled
        If WaitHandle.WaitAny(New WaitHandle() {m_sig, l_ar.AsyncWaitHandle}) > 0 Then

            l_msg = m_mq.EndPeek(l_ar)

            If l_msg IsNot Nothing Then

                'doing stuff here

            End If

            Exit Do
        End If

Ответы [ 4 ]

2 голосов
/ 29 августа 2009

Чтобы MSMQ мог работать между доменами, в рассматриваемых доменах должно быть установлено двустороннее доверие. Очередь сообщений должна быть публичной. Если он установлен в качестве очереди транзакций, клиент и сервер должны использовать MSMQ 4.0 (часть Windows Server 2008 и более поздних версий)

1 голос
/ 09 декабря 2010

Проверьте часы между клиентом и сервером: слишком большой промежуток времени может вызвать «Отказ в доступе».

1 голос
/ 29 августа 2009

Только для теста дают анонимный полный контроль.

0 голосов
/ 29 августа 2009

Не должно быть проблемой, что системы находятся в разных доменах, если вы не используете домен для аутентификации. Что происходит, когда вы предоставляете «Системе» полный контроль? Отредактируйте свой вопрос, включив в него код, который вы используете для открытия очереди, и точную ошибку, которую вы получите, если это не решит проблему.

...