我想将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”中,只有正文被读取和写入,因为消息被包装在另一条消息中。
答案 0 :(得分:1)
查看Charles,您可以轻松存储会话然后再次播放,甚至编辑单个请求并更改主机名等。我们使用它来生成测试会话,保存它们,然后重播与机器人进行会话以生成有用的负载测试。
唯一的缺点是评估版仅适用于30分钟,但是嘿,如果你一直使用它,那么50美元的全部许可费用是非常值得的。