2011-03-06 56 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