2010-08-04 19 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