MSMQ 安装在运行 Windows 2003 R2 SP 2 的服务器上。安装了 .Net 2.0。发送到此队列的所有消息都应该是 QMsg 类型。无论如何,Peek 返回一个 System.Messaging.Message 类型的对象,但 Body 出错,并出现异常,表明 Root 缺失。我已经在“This”定义处设置了断点,并且可以查看“Something”实例。
Body = {“无法反序列化作为参数传递的消息。无法识别序列化格式。”}
public QMsg GetCommand()
{
Message Something = mqCompany.Peek();
string This = Something.Body.GetType.ToString.ToLower;
//. . . Code to check the type of Body
return (QMsg)mqCompany.Receive().Body;
}
Private Function GetCommand() as QMsg
Dim Something as Message = mqCompany.Peek()
Dim This as string = Something.Body.GetType.ToString.ToLower
. . . Code to check the type of Body
GetCommand = CType(mqCompany.Receive().Body, QMsg)
End Function
如果我允许执行“This”语句,它会引发异常。但是,如果我跳到包含 Receive 方法的最后一条语句,它执行得很好。最奇怪的是,一旦 Receive 被执行一次,Peek 就会在之后的所有事情上工作。在最初执行 Peek 之前我需要做一些特别的事情吗?