Хорошо, моя проблема похожа на Как получить сообщение из личной очереди рабочей группы (и я в основном использую тот же код).
Я создаю очередь на хост-машинеиспользование
MessageQueue.Create(@".\Private$\MyNewPrivateQueue");
Открытие очереди на удаленной машине с помощью
var queue = new MessageQueue(@"FormatName:DIRECT=TCP:xxx.xxx.xxx.xxx\PRIVATE$\MyNewPrivateQueue");
И запись / чтение данных с использованием queue.send () и queue.Receive ()
У меня есть две системы, с которыми я экспериментирую.
- Windows 7 Home Premium x64
- Windows XP SP3
Когда я создаю личную очередь в системе W7 и пытаюсь записать, а затем прочитать очередьиз системы XP (согласно указанному вопросу) происходит сбой с исключением «Служба очереди сообщений» в действии чтения.
Однако, когда я обращаюсь к системам (создаю очередь в системе XPи запись / чтение из системы W7 и с использованием того же кода) работает , как и ожидалось.
Я прошел через:
- ЧтениеСообщения из удаленных очередей
- Понимание того, как защита MSMQ блокирует трафик RPC
- Удаленное получение сообщений MSMQ из Windows Server 2008
- Очистить путь - MSMQ проходит через
- MSMQ 3.0 слишком безопасен для вас?
Я также пытался отключитьбрандмауэры W7 и XP, и дали каждому человеку и его собаке полные права на очередиОни бесполезны.
Учитывая, что он работает с XP в качестве хоста очереди, но не с W7 в качестве хоста, я предполагаю, что это проблема безопасности, а не кода.Но по жизни я не вижу, где в W7 блокировка.
РЕДАКТИРОВАТЬ 8/9
ОК .. добавление
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\Security\AllowNonauthenticatedRPC
Позволил мне читать сообщения из удаленной частной очереди.Однако это, похоже, не позволяет использовать
GetPrivateQueueByMachine(String machineName)
для перечисления доступных частных очередей.Так есть идеи для этого?