2012-06-25 3 views
1

들어오는 메시지를 기록하는 MessageInspector가 있습니까? 한 번만 메시지를 읽을 수 있고 사본을 만들어야하는 이유는 무엇입니까? MSDN에서 버퍼링 된 복사본을 만들어야한다는 설명서를 보았습니다. 그러나이 방법으로 구현 된 이유를 모르겠습니다. 누군가 나에게 설명 할 수 있을까? 내가 서버의 일부 또는 메시지의 버퍼링 된 복사본을 사용하는 MessageInspector을 변경할 수있는 기능에 액세스 할 수없는 경우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); 
} 

, 나는 스트림의 사본을 만들 수 위의 메시지를 수정할 수 있습니다? 그렇다면 어떻게해야할까요?

+1

[Data Transfer Architectural Overview] (http://msdn.microsoft.com/en-us/library/aa347789.aspx) (영문)는 * 메시지 본문은 한 번만 검색 할 수 있습니다. 이것은 forward-only 스트림으로 작업하는 것을 가능하게합니다. * - 따라서 이것은 성능 최적화 측정이며, 무엇보다도이 아키텍처 결정을 이끌어내는 것으로 믿을 수 있습니다. –

+0

이는 기사가 말한대로 고급 개발자를위한 것입니다. 나는 그것을 고맙게 생각한다. 전진 전용 스트림이 무엇인지 전혀 모릅니다. – Xaisoft

+0

누구가 downvoted? 왜 설명 할 수 있니? – Xaisoft

답변

관련 문제