2015-01-09 27 views
0

我尝试获取MSMQ队列中项目的内容。从MSMQ获取正文内容

当我看到该条目使用QueueExplorer主体内容就像是

[{"$type":"MyProject.MyClass.MyMethod, Messages","CustomerDecision":0,"OrderReferenceoId":"4fdb6be2-bfde-42b0-93fd-47058a326a24"}] 

当我尝试使用下面的代码阅读的内容,体内只包含奇怪的废话,多为\ 0 \ 0等。 :

message.Formatter = new XmlMessageFormatter(); 
var reader = new StreamReader(message.BodyStream); 
var msgBody = reader.ReadToEnd(); 

(消息是类型System.Messaging.Message的)

+0

为什么你使用XmlMessageFormatter序列化为Json的内容?就像你必须序列化一个对象来让它在主体中出现这样的一样,你需要在退出队列的时候反序列化它。 –

+0

我不知道该内容是如何序列化的。我只想收到纯文本。 QueueExplorer无法知道该格式。 (我也尝试了BinaryMessageFormatter,结果相同) –

回答

1

这是一个问题编码。结果看起来像随机垃圾,但只是一个Unicode字符集。下面解决了这个问题:

message.Formatter = new BinaryMessageFormatter(); 
var reader = new StreamReader(message.BodyStream, Encoding.Unicode); 
var msgBody = reader.ReadToEnd();