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)
使用以下代码:
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)