如何阻止我的System.Messaging.MessageQueue将我的字符串包装在XML中?

Dam*_*isa 5 .net c# msmq xml-serialization

我需要通过Windows Message Queue与我的C#应用​​程序中的遗留应用程序进行通信.

遗留应用程序需要特定专用队列中的纯字符串消息,但我似乎无法阻止System.Messaging.MessageQueue将我的消息包装在XML中!

我正在测试的代码非常简单:

MessageQueue myQueue = new MessageQueue(@".\Private$\tolegacy");
Message msg = new Message("My Test String");
myQueue.Send(msg);
Run Code Online (Sandbox Code Playgroud)

问题是消息是XML序列化的,并在队列中显示为:

<?xml version="1.0"?><string>My Test String</string>
Run Code Online (Sandbox Code Playgroud)

我无法修改遗留应用程序的行为,因此我需要阻止System.Messaging.MessageQueue将我的消息格式化为XML.

有人可以帮忙吗?

Jef*_*eff 3

您可以创建自己的格式化程序(它是一个实现 IMessageFormatter 的类,并将其分配给 Message 的 Formatter 属性

以下是Message.Formatter 属性的 MSDN 链接。

我还没有尝试过这个,但你应该能够使用 BodyStream 编写你的消息,我相信这会绕过格式化程序。