我的DEV服务器是Windows 2008 R2安装了MSMQ。 我的本地开发机器是Windows XP,也安装了MSMQ。显然它们是两种不同的MSMQ版本。
在我的代码中,我有类似
的内容 MessageQueue queue = new MessageQueue(@"formatname:DIRECT=OS:MyDevServer\Private$\MyQueue", QueueAccessMode.Send);
Message message = new Message(value, new BinaryMessageFormatter());
queue.Send(message, MessageQueueTransactionType.Single);
queue.Close();
return message.Id;
发送消息。我的目的是使消息显示在我的DEV服务器的专用队列中。
我在DEV服务器上创建了这个队列,权限为
我可以毫无例外地在本地运行代码,我也可以获取消息Id。在我当地的Windows XP的MSMQ上,我可以看到我有Outgoing Queue
- > DIRECT=OS:MyDevServer\Private$\MyQueue
- > Queue Messages
。新消息将显示在此队列中。过了一会儿,消息消失了。但我在DEV服务器的队列中的任何地方都看不到它。
更新:我发现SO帖子“MSMQ on Win2008 R2 won’t receive messages from older clients”解决了我的问题,上面的代码是正确的,但目标主机阻止了流量。