奇怪的一个。我们有一个多线程应用程序,它从 MSMQ 队列中提取消息,然后根据消息执行操作。所有这些都是使用 DTC 完成的。
有时,由于某种我无法描述的原因,我们在将消息从队列中拉出时会出现消息读取错误。
应用程序中使用的代码:
Message[] allMessagesOnQueue = this.messageQueue.GetAllMessages();
foreach (Message currentMessage in allMessagesOnQueue)
{
if ((currentMessage.Body is IAMessageIDealWith))
{
// do something;
}
}
访问 currentMessage.Body 时,有时会引发异常:
System.InvalidOperationException:接收消息时未检索到属性正文。确保 PropertyFilter 设置正确。
现在 - 这只在某些时候发生 - 看起来好像队列上的 MessageReadPropertyFilter 的 Body 属性设置为 false。
至于它是怎么变成这样的,有点神秘。Body 属性是默认值之一,我们绝对不会将其显式设置为 false。
有没有其他人看到过这种行为或者知道为什么这个值被设置为假?