2012-06-25 51 views
1

我有一個MessageInspector,記錄通過的消息?爲什麼只能閱讀一條消息並且必須創建副本?我已經看到了MSDN的文檔,我需要創建一個緩衝副本,但我不知道爲什麼它以這種方式實現?有人可以向我解釋嗎?說明使用WCF讀取消息對象一次?

private static void SendRequest(string request) 
{ 
var req = (HttpWebRequest) WebRequest.Create("http://urltoservice.svc/MethodToCall"); 
req.ContentType = "text/xml"; 
req.Method = "POST"; 

using (var stm = req.GetRequestStream()) 
{ 
    using (var stmw = new StreamWriter(stm)) 
    { 

     stmw.Write(request); 
    } 
} 


byte[] myData; 
using (var webResponse = req.GetResponse()) 
{ 

    var responseStream = webResponse.GetResponseStream(); 
    myData = ReadFully(responseStream); 
} 

// Do whatever you need with the response 
string responseString = Encoding.ASCII.GetString(myData); 
} 

如果我沒有訪問服務器的部分或更改使用消息的緩衝副本MessageInspector的能力,我可以修改上述消息作出流的副本?如果是這樣,我該怎麼做呢?

+1

請參閱[數據傳輸體系結構概述](http://msdn.microsoft.com/zh- cn/library/aaa347789.aspx)消息正文只能被檢索一次。這使得可以使用只向前流*。所以這使我相信這是一個性能優化措施,最重要的是,導致這個架構決定 –

+0

這是高級開發人員的文章所述。但我很欣賞它。我不知道什麼是僅前向流? – Xaisoft

+0

誰低估?你能解釋爲什麼嗎? – Xaisoft

回答