MQMessage.ReadString 给出错误 "Unable to read beyond the end of the stream in mscorlip"

MQMessage.ReadString gives error "Unable to read beyond the end of the stream in mscorlip"

使用以下代码:

System.Console.WriteLine(mqMsg.ReadString(mqMsg.MessageLength))
Dim InfoMsg As String = SmqMsg.ReadString(mqMsg.MessageLength)

第一行工作正常,将 MQMessage 写入控制台,但第二行出现异常:

Unable to read beyond the end of the stream in mscorlib

有什么问题?

MQMessage.ReadString(length) 将邮件正文中的光标前进 length 字节。例如,如果消息正文长度为 100 字节,第一个 ReadString(50) 会将光标前进到 51st 字节,以便下一个 ReadString 调用将从 51st 字节读取。

在您的例子中,第一条语句 System.Console.WriteLine(mqMsg.ReadString(mqMsg.MessageLength)) 是阅读整个邮件正文。由于已读取整条消息并且游标超出了消息长度,因此第二个语句 Dim InfoMsg As String = SmqMsg.ReadString(mqMsg.MessageLength) 抛出异常。

您可以如下更改代码

Dim InfoMsg As String = SmqMsg.ReadString(mqMsg.MessageLength)
System.Console.WriteLine(InfoMsg)