当前位置:  开发笔记 > 编程语言 > 正文

消息队列错误:找不到能够读取消息的格式化程序

如何解决《消息队列错误:找不到能够读取消息的格式化程序》经验,为你挑选了3个好方法。

我正在使用C#将消息写入消息队列,如下所示:

queue.Send(new Message("message"));

我正在尝试阅读如下消息:

Messages messages = queue.GetAllMessages();
foreach(Message m in messages)
{
  String message = m.Body;
  //do something with string
}

但是我收到一条错误消息,上面写着:"找不到能够读取此消息的格式化程序."

我究竟做错了什么?



1> macleojw..:

我通过在每条消息中添加格式化程序来解决问题.将格式化程序添加到队列不起作用.

Messages messages = queue.GetAllMessages();
foreach(Message m in messages)
{
  m.Formatter = new XmlMessageFormatter(new String[] { "System.String,mscorlib" });
  String message = m.Body;

  //do something with string
}



2> prime23..:

或者你可以使用

 message.Formatter =
     new System.Messaging.XmlMessageFormatter(new Type[1] { typeof(string) });


我认为这比接受的答案更可取.与将完整类型名称指定为字符串相比,它更"强大".

3> felbus..:

您可以尝试阅读消息的正文流而不是正文,如下所示:

StreamReader sr = new StreamReader(m.BodyStream);    
string messageBody = "";    
while (sr.Peek() >= 0) 
{
    messageBody += sr.ReadLine();
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有