2011-09-01 52 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 :) –

相关问题