MQMessage.ReadString给出了错误"无法在mscorlip"中读取超出流末尾的内容。

时间:2016-06-22 22:00:25

标签: vb.net ibm-mq bytebuffer mq

使用以下代码:

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

第一行正常工作并将MQMessage写入控制台,但第二行提供异常:

  

无法在mscorlib

中读取超出流的末尾

有什么问题?

1 个答案:

答案 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)