我的 DEV 服务器是安装了 MSMQ 的 Windows 2008 R2。我的本地开发机器是Windows XP,也安装了MSMQ。显然它们是 2 个不同的 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 服务器上创建了这个队列,权限为
- 每个人 - 获取权限,发送消息
- 我的域帐户来创建队列 - 我可以做任何事情
- MyDevServer$ - 获取属性、获取权限、发送消息
- 匿名登录 - 发送消息
我可以毫无例外地在本地运行代码,也可以获取消息Id。在我本地的 Windows XP 的 MSMQ 上,我可以看到我有Outgoing Queue
-> DIRECT=OS:MyDevServer\Private$\MyQueue
-> Queue Messages
。新消息出现在此队列中。过了一会儿,消息消失了。但是我在我的开发服务器队列中的任何地方都看不到它。
更新:我发现 SO 发布“ Win2008 R2 上的 MSMQ 不会收到来自旧客户端的消息”这解决了我的问题,上面的代码是正确的,但是目标主机阻塞了流量。