2011-09-01 58 views
0

Windows 7 32位,.NET4。具體而言,當我這樣做:MSMQ InvalidOperationException在發送()後嘗試搶LookupId

_queue.Send(mqMessage); 
return mqMessage.LookupId; 

我上lookupId所的訪問一個InvalidOperationException。例外消息是:

查找標識符未針對此消息定義。該消息不是通過調用Receive方法創建的,或者查找標識符未添加到要檢索的屬性。

對我而言,這聽起來像是郵件沒有成功發送到MSMQ。我從控制面板\所有控制面板項目\程序和功能中的「打開或關閉Windows功能」選項安裝了所有MSMQ相關功能。

如果我看看我的本地Windows服務,我看到「消息隊列」和「消息隊列觸發器」已啓動並正在運行。

任何想法這裏發生了什麼?

+0

LookupId特定於它所在的隊列。在消息發送到目標隊列之前,可能需要等待一段時間。 – hatchet

回答

4

這在MSDN Library文章中明確提到了Message.LookupId:

的lookupId所屬性只能從一個 隊列

檢索的消息被讀取,只有當您收到使用消息,而不是當你發送。爲了使它更直觀:發送的消息可以分派給多個隊列,消息的每個副本都有自己的ID。因此,發送站點不能有唯一的ID。

+0

鏈接到MSDN文檔http://msdn.microsoft.com/en-us/library/system.messaging.message.lookupid.aspx – hatchet

+0

感謝該文章的LookupId :) –