尝试抓取LookupId时,Send()之后的MSMQ InvalidOperationException

时间:2011-09-01 23:10:07

标签: .net windows-7 msmq

Windows 7 32位,.NET4。具体来说,当我这样做时:

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

我在LookupId的访问上遇到InvalidOperationException。异常消息是:

  

未为此消息定义查找标识符。该消息不是通过调用Receive方法创建的,或者查找标识符未添加到要检索的属性中。

对我而言,这听起来好像消息未成功发送到MSMQ。我在“控制面板\所有控制面板项目\程序和功能”中的“打开或关闭Windows功能”选项中安装了所有与MSMQ相关的功能。

如果我查看本地Windows服务,我会看到“消息队列”和“消息队列触发器”已启动并正在运行。

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:5)

在Message.LookupId的MSDN Library文章中明确提到了这一点:

  

LookupId属性只能在从a检索到的消息上读取   队列

仅在收到消息时使用,而不是在发送时使用。为了使其直观:可以将已发送的消息分派到多个队列,消息的每个副本都有自己的ID。因此,发送站点不能有唯一的ID。