我正在使用C#将消息写入消息队列,如下所示:
queue.Send(new Message("message"));
我正在尝试阅读如下消息:
Messages messages = queue.GetAllMessages(); foreach(Message m in messages) { String message = m.Body; //do something with string }
但是我收到一条错误消息,上面写着:"找不到能够读取此消息的格式化程序."
我究竟做错了什么?
我通过在每条消息中添加格式化程序来解决问题.将格式化程序添加到队列不起作用.
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 }
或者你可以使用
message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[1] { typeof(string) });
您可以尝试阅读消息的正文流而不是正文,如下所示:
StreamReader sr = new StreamReader(m.BodyStream); string messageBody = ""; while (sr.Peek() >= 0) { messageBody += sr.ReadLine(); }