使用以下代码:
System.Console.WriteLine(mqMsg.ReadString(mqMsg.MessageLength))
Dim InfoMsg As String = SmqMsg.ReadString(mqMsg.MessageLength)
第一行正常工作并将MQMessage写入控制台,但第二行提供异常:
无法在mscorlib
中读取超出流的末尾
有什么问题?
答案 0 :(得分:3)
MQMessage.ReadString(length)
使消息体中的光标前进length
个字节。例如,如果消息体长度为100字节,则第一个ReadString(50)
将光标前进到51st
字节,以便下一个ReadString
调用将从51st
字节读取。 / p>
在您的情况下,第一个语句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)