存储和重播WCF消息

时间:2010-08-04 16:18:11

标签: wcf serialization xml-serialization messages

我想将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 .. “就是这样。

请告诉你 非常感谢: - )

请注意:在“WriteMessage”中,只有正文被读取和写入,因为消息被包装在另一条消息中。

1 个答案:

答案 0 :(得分:1)

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

唯一的缺点是评估版仅适用于30分钟,但是嘿,如果你一直使用它,那么50美元的全部许可费用是非常值得的。