2010-08-04 69 views
1

我想将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”只是身体被读取和写入的消息被包裹在另一条消息。

+0

当我使用CreateTextReader/Writer而不是BinaryReader/Writer时,消息被很好地读取和写入。 (我不明白它是如何使用BinaryWriter写的..) – Tamir 2010-08-04 16:25:16

回答

1

看看Charles,您可以轻松存储会话,然后再次播放,甚至编辑个人请求并更改主机名等。我们用它来生成测试会话,保存它们,然后重播会话机器人产生有用的负载测试。

唯一的缺点是评估版本只能运行30分钟,但是,嘿,如果您一直使用它,那么50美元的完整许可证费用是值得的。

+0

这可能是不错的,但对于目前,使用第三方工具不是一个选项:-)谢谢。 – Tamir 2010-08-05 06:34:31