我想将WCF消息存储在某些存储中,稍后再读取它们以便再次“重放”它们。存储和重播WCF消息
附加了一些代码部分:
private void WriteMessage(Message message, string path)
{
FileStream fileStream = new FileStream(path, FileMode.Create);
using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(fileStream))
{
using (XmlDictionaryReader reader = message.GetReaderAtBodyContents())
{
message.WriteBodyContents(writer);
writer.Flush();
}
}
}
private Message ReadMessage(string path)
{
using (FileStream fs = File.OpenRead(path))
{
using (XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(fs, XmlDictionaryReaderQuotas.Max))
{
fs.Flush();
Message message = Message.CreateMessage(reader, int.MaxValue, messageVersion);
return message.CreateBufferedCopy(int.MaxValue).CreateMessage();
}
}
}
问题是存储该消息前,Message.ToString()返回的消息字符串,因为它是想,整个消息,但看完后,该的ToString ()将身体显示为“... stream ...”,就是这样。
请advaice
非常感谢:-)
请注意:在“的WriteMessage”只是身体被读取和写入的消息被包裹在另一条消息。
当我使用CreateTextReader/Writer而不是BinaryReader/Writer时,消息被很好地读取和写入。 (我不明白它是如何使用BinaryWriter写的..) – Tamir 2010-08-04 16:25:16