Windows 7 32位,.NET4。具体来说,当我这样做时:
_queue.Send(mqMessage);
return mqMessage.LookupId;
我在LookupId的访问上遇到InvalidOperationException。异常消息是:
未为此消息定义查找标识符。该消息不是通过调用Receive方法创建的,或者查找标识符未添加到要检索的属性中。
对我而言,这听起来好像消息未成功发送到MSMQ。我在“控制面板\所有控制面板项目\程序和功能”中的“打开或关闭Windows功能”选项中安装了所有与MSMQ相关的功能。
如果我查看本地Windows服务,我会看到“消息队列”和“消息队列触发器”已启动并正在运行。
知道这里发生了什么吗?
答案 0 :(得分:5)
在Message.LookupId的MSDN Library文章中明确提到了这一点:
LookupId属性只能在从a检索到的消息上读取 队列
仅在收到消息时使用,而不是在发送时使用。为了使其直观:可以将已发送的消息分派到多个队列,消息的每个副本都有自己的ID。因此,发送站点不能有唯一的ID。