2016-06-21 3 views
1

IClientMessageInspectorBeforeSendRequest 메서드를 사용하여 사용자 지정 XML 텍스트를 "주입"하고 싶습니다. 시도한 코드는 다음과 같습니다.IClientMessageInspector에서 BeforeSendRequest를 사용하여 새 xml 삽입

public object BeforeSendRequest(ref Message request, IClientChannel channel) 
{  
    String myXML = "somexmlcontent"; 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(myXML); 
    var ms = new MemoryStream(); 
    XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(ms); 
    doc.WriteTo(writer); 
    writer.Flush(); 
    ms.Position = 0; 
    XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(ms, XmlDictionaryReaderQuotas.Max); 
    Message newReply = Message.CreateMessage(reader, int.MaxValue, request.Version); 
    request = newReply; 

    return null; 
} 

그러나 "인식 할 수없는 메시지 버전"오류가 표시됩니다.

+0

'request.Version'의 값은 무엇입니까? –

+0

버전 = {Soap12 (http://www.w3.org/2003/05/soap-envelope) Addressing10 (http://www.w3.org/2005/08/addressing)} – KingOfBabu

답변

1

이전에 조작 할 메시지의 복사본 만들기 :

request = Message.CreateMessage(reader, int.MaxValue, message.Version); 

당신은 또한 원래 요청의 버전을 설정 새로운 마사지를 만들 수 있습니다

MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue); 
request = buffer.CreateMessage(); 
Message message = buffer.CreateMessage(); 

이 그런 다음 XML을 기반으로 새 메시지를 만듭니다 대상 :

Message newReply = Message.CreateMessage(reader, int.MaxValue, request.Version); 
request = newReply; 

희망 하시겠습니까?