C# 从MSMQ获取正文内容

C# 从MSMQ获取正文内容,c#,msmq,C#,Msmq,我尝试获取MSMQ队列中某个项目的内容 当我使用QueueExplorer查看该条目时,主体内容如下 [{"$type":"MyProject.MyClass.MyMethod, Messages","CustomerDecision":0,"OrderReferenceoId":"4fdb6be2-bfde-42b0-93fd-47058a326a24"}] 当我尝试使用以下代码阅读内容时,正文中只包含奇怪的废话,主要是\0\0等: message.Formatter = new XmlMe

我尝试获取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)

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

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

为什么要对序列化为Json的内容使用XmlMessageFormatter?与您必须序列化对象才能使其在正文中显示为这样的方式相同,您需要在返回队列时对其进行反序列化。我不知道此时内容是如何序列化的。我只想收到纯文本。QueueExplorer也无法知道格式。(我还尝试了BinaryMessageFormatter,结果相同)