.net 尝试获取LookupId时,发送()后出现MSMQ InvalidOperationException

.net 尝试获取LookupId时,发送()后出现MSMQ InvalidOperationException,.net,windows-7,msmq,.net,Windows 7,Msmq,Windows 7 32位,.NET4。具体来说,当我这样做时: _queue.Send(mqMessage); return mqMessage.LookupId; 我在访问LookupId时收到一个InvalidOperationException。例外消息是: 未为此消息定义查找标识符。消息不是通过调用Receive方法创建的,或者查找标识符没有添加到要检索的属性中 在我看来,这条消息似乎没有成功发送到MSMQ。我通过“控制面板\所有控制面板项目\程序和功能”中的“打开或关闭Window

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

_queue.Send(mqMessage);
return mqMessage.LookupId;
我在访问LookupId时收到一个InvalidOperationException。例外消息是:

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

在我看来,这条消息似乎没有成功发送到MSMQ。我通过“控制面板\所有控制面板项目\程序和功能”中的“打开或关闭Windows功能”选项安装了所有MSMQ相关功能

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


你知道这里发生了什么吗?

这在MSDN库中的Message.LookupId:

LookupId属性只能在从中检索的消息上读取 排队


只在收到信息时使用,而不是在发送信息时使用。为了直观起见:一封已发送的邮件可以发送到多个队列,邮件的每个副本都有自己的id。因此,在发送站点不能有一个唯一的id。

这在MSDN Library文章中明确提到。LookupId:

LookupId属性只能在从中检索的消息上读取 排队


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

LookupId特定于它所在的队列。消息可能在发送后一段时间才到达目标队列。LookupId特定于它所在的队列。邮件发送后可能需要一段时间才能到达目标队列。链接到MSDN文档感谢您提供该文章的LookupId:)链接到MSDN文档感谢您提供该文章的LookupId:)