【问题标题】:MSMQ InvalidOperationException after Send() when trying to grab LookupId尝试获取 LookupId 时,Send() 之后的 MSMQ InvalidOperationException
【发布时间】:2011-09-01 23:10:07
【问题描述】:

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

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

我在访问 LookupId 时收到 InvalidOperationException。异常消息是:

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

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

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

知道这里发生了什么吗?

【问题讨论】:

  • LookupId 特定于它所在的队列。可能在您发送之后的一段时间内,消息甚至还没有到达目标队列。

标签: .net windows-7 msmq


【解决方案1】:

MSDN 库文章中明确提到了 Message.LookupId:

LookupId 属性只能在从 排队

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
相关资源
最近更新 更多