Microsoft MessageQueue Formatter属性始终为null

时间:2012-12-27 13:01:38

标签: c# .net ipc message-queue

基本的Microsoft Message Queue实现存在以下问题:

在阅读方面,无论我在发送方输入什么,消息的Formatter属性始终为空。

发送代码:

System.Messaging.Message m = new System.Messaging.Message("string to send");
m.Formatter = new XmlMessageFormatter( new Type[1] { typeof(string) } );
queue.Send(m, "label");

接收代码:

MessageEnumerator enumerator = queue.GetMessageEnumerator2();
while (enumerator.MoveNext())
{
    Message m = enumerator.RemoveCurrent();
    Console.WriteLine("MSQ: " + m.Label);

    Console.WriteLine("Formatter: " + m.Formatter.GetType().ToString()); // crash because formatter property is null

    Console.WriteLine("Body: " + m.Body); //also crashes since formatter is null
}

由于Formatter为空,我也无法得到m.Body这是我最需要的。

1 个答案:

答案 0 :(得分:4)

使用MessageQueue.Formatter属性

消息反序列化。因此,您必须在接收代码中初始化MessageQueue.Formatter属性(队列 .Formatter):

((XmlMessageFormatter)queue.Formatter).TargetTypes = new Type[1] { typeof(string) };