MSMQ。显示消息正文
MSMQ. Displaying message body
我遇到了显示邮件正文的问题。我使用 C# 将测试消息(使用 XmlFormatter)发送到队列(我有 Windows 7)。
如何从邮件正文预览中删除十六进制?
我发现了一个有趣的时刻:如果正文少于 612 字节 - xml 显示正常,但如果正文多于 612 字节 - 显示为十六进制。
我不能使用 BinaryFormatter,因为我需要在消息 属性(正文)中显示清楚 xml。 (如果使用 BinaryFormatter,也会显示十六进制)。
我尝试创建自定义 (TxtFormatter) 格式化程序 - 也显示了十六进制。
我找到了解决方案。只需要使用 ActiveXMessageFormatter
如果您在传递非 XML 字符串时使用 XmlMessageFormatter()
,您应该确保以下几点:
- 如果消息是对象,请确保它具有属性
[Serializable]
。否则,消息正文将是十六进制格式。
- 如果在 XSD(XML 架构定义)文件中定义,请确保生成的序列化对象属性正确映射并具有有效值。
或者您可以使用 MSMQ Studio 查看 MSMQ 消息。 https://msmq-studio.com
我遇到了显示邮件正文的问题。我使用 C# 将测试消息(使用 XmlFormatter)发送到队列(我有 Windows 7)。
如何从邮件正文预览中删除十六进制?
我发现了一个有趣的时刻:如果正文少于 612 字节 - xml 显示正常,但如果正文多于 612 字节 - 显示为十六进制。
我不能使用 BinaryFormatter,因为我需要在消息 属性(正文)中显示清楚 xml。 (如果使用 BinaryFormatter,也会显示十六进制)。 我尝试创建自定义 (TxtFormatter) 格式化程序 - 也显示了十六进制。
我找到了解决方案。只需要使用 ActiveXMessageFormatter
如果您在传递非 XML 字符串时使用 XmlMessageFormatter()
,您应该确保以下几点:
- 如果消息是对象,请确保它具有属性
[Serializable]
。否则,消息正文将是十六进制格式。 - 如果在 XSD(XML 架构定义)文件中定义,请确保生成的序列化对象属性正确映射并具有有效值。
或者您可以使用 MSMQ Studio 查看 MSMQ 消息。 https://msmq-studio.com