【问题标题】:Store And Replay WCF Messages存储和重放 WCF 消息
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 这可能很好,但就目前而言,使用 3rd 方工具不是一种选择 :-) 无论如何谢谢。
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 1970-01-01
相关资源
最近更新 更多