从 MSMQ 获取正文内容

Getting Body content from MSMQ

我尝试获取 MSMQ - 队列中项目的内容。

当我使用 QueueExplorer 查看该条目时,正文内容就像

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

当我尝试使用以下代码阅读内容时,正文中只包含奇怪的废话,主要是 [=20=][=20=] 等:

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();