【问题标题】:Getting Body content from MSMQ从 MSMQ 获取正文内容
【发布时间】:2015-01-09 20:10:57
【问题描述】:

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

【问题讨论】:

  • 为什么要使用 XmlMessageFormatter 将内容序列化为 Json?与您必须序列化一个对象以使其在主体中显示为这样的方式相同,您需要在退出队列的途中对其进行反序列化。
  • 我不知道当时内容是如何序列化的。我只想接收纯文本。 QueueExplorer 也不知道格式。 (我也尝试了 BinaryMessageFormatter,结果相同)

标签: c# msmq


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2014-06-06
    相关资源
    最近更新 更多