2011-03-06 57 views
2

我的本地计算机位于域A上,我的简单控制台应用程序尝试将消息放入位于域B上的远程计算机的专用队列中。在传出队列中,状态显示已连接但消息似乎并没有消失。在接收方,私人队列似乎没有收到消息。专用队列的权限设置为对每个人,匿名登录和系统的完全控制。两个域之间的MSMQ专用队列问题

+0

你有没有例外?我假设您的控制台应用程序在域A的域帐户下运行?域A和域B之间是否存在信任? – rene 2011-03-06 21:29:39

+0

不会有任何例外;该消息已进入传出队列,因此send()已成功100%。 – 2011-03-07 19:53:21

回答

0

你可以尝试模拟用户的域B第一(见http://blogs.msdn.com/b/joncole/archive/2009/09/21/impersonation-code-in-c.aspx

,然后拨打电话(S)到远程队列

不是100%肯定这是否会工作,虽然。

+0

会使用 help? – Ajay 2011-03-07 08:22:14

+0

如果这是一个权限问题,MSMQ将放弃交付时的消息。另外,安全性也是开放的,所以不是权限问题。更有可能的是确认没有从远程机器返回以允许消息流动。需要更多详细信息 - 队列交易等。 – 2011-03-07 09:27:03

+0

队列不是事务性的,您希望我提供哪些其他信息? – Ajay 2011-03-07 12:33:48

0

这与NAT有关,如果接收方机器位于NAT之后,则无法将MQ发送给它。 的解决办法是在接收器的机器上指定一个公网IP和使用直接TCP地址格式是 'FORMATNAME:DIRECT = TCP:{REMOTEIP} \私人$ \ {QUEUENAME}'

Forexample:

FormatName:DIRECT = TCP:200.201.202.203 \ private $ \ mqReceiverQueue