MSMQ Проблема чтения удаленных частных очередей (снова) - PullRequest
8 голосов
/ 08 августа 2011

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

Я создаю очередь на хост-машинеиспользование

MessageQueue.Create(@".\Private$\MyNewPrivateQueue");

Открытие очереди на удаленной машине с помощью

var queue = new MessageQueue(@"FormatName:DIRECT=TCP:xxx.xxx.xxx.xxx\PRIVATE$\MyNewPrivateQueue");

И запись / чтение данных с использованием queue.send () и queue.Receive ()

У меня есть две системы, с которыми я экспериментирую.

  1. Windows 7 Home Premium x64
  2. Windows XP SP3

Когда я создаю личную очередь в системе W7 и пытаюсь записать, а затем прочитать очередьиз системы XP (согласно указанному вопросу) происходит сбой с исключением «Служба очереди сообщений» в действии чтения.

Однако, когда я обращаюсь к системам (создаю очередь в системе XPи запись / чтение из системы W7 и с использованием того же кода) работает , как и ожидалось.

Я прошел через:

  1. ЧтениеСообщения из удаленных очередей
  2. Понимание того, как защита MSMQ блокирует трафик RPC
  3. Удаленное получение сообщений MSMQ из Windows Server 2008
  4. Очистить путь - MSMQ проходит через
  5. MSMQ 3.0 слишком безопасен для вас?

Я также пытался отключитьбрандмауэры W7 и XP, и дали каждому человеку и его собаке полные права на очередиОни бесполезны.

Учитывая, что он работает с XP в качестве хоста очереди, но не с W7 в качестве хоста, я предполагаю, что это проблема безопасности, а не кода.Но по жизни я не вижу, где в W7 блокировка.

РЕДАКТИРОВАТЬ 8/9

ОК .. добавление

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC 

Позволил мне читать сообщения из удаленной частной очереди.Однако это, похоже, не позволяет использовать

GetPrivateQueueByMachine(String machineName)

для перечисления доступных частных очередей.Так есть идеи для этого?

1 Ответ

6 голосов
/ 08 августа 2011

ОК .. Я явно не читал все, что мне нужно было прочитать.Ответ был таким:

MSMQ 4.0 - что нового в управлении компьютером?

Мне нужно было добавить новый раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC

и установите значение 1.

Как только я это сделаю на сервере W7, я смогу прочитать очередь с машины XP.

Я единственный, кто считает, что это странно, чтокто-нибудь может написать в очередь, но я должен был установить это для чтения из очереди?Это так странно.

...