【发布时间】:2011-03-25 08:48:48
【问题描述】:
我想将 WCF 消息存储在某个存储中,稍后再阅读它们,以便再次“重播”它们。
附上部分代码:
private void WriteMessage(Message message, string path)
{
FileStream fileStream = new FileStream(path, FileMode.Create);
使用 (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(fileStream))
{
使用 (XmlDictionaryReader reader = message.GetReaderAtBodyContents())
{
message.WriteBodyContents(writer);
writer.Flush();
}
}
}
私信ReadMessage(字符串路径)
{
使用 (FileStream fs = File.OpenRead(path))
{
使用 (XmlDictionaryReader 阅读器 = XmlDictionaryReader.CreateBinaryReader(fs, XmlDictionaryReaderQuotas.Max))
{
fs.Flush();
消息消息 = Message.CreateMessage(reader, int.MaxValue, messageVersion);
返回 message.CreateBufferedCopy(int.MaxValue).CreateMessage();
}
}
}
问题是在存储消息之前,Message.ToString() 返回消息字符串,因为它应该是整个消息,但是在读取它之后,ToString() 将正文显示为“...流.. ." 就是这样。
请多指教
非常感谢:-)
请注意:在“WriteMessage”中,只有正文被读取和写入,因为消息被包装在另一条消息中。
【问题讨论】:
-
当我使用 CreateTextReader/Writer 而不是 BinaryReader/Writer 时,消息被很好地读取和写入。 (我看不到它是如何使用 BinaryWriter 编写的..)
标签: wcf serialization xml-serialization messages