2016-06-21 12 views
1

BeforeSendRequestメソッドを使用してカスタムXMLテキストを「注入」したいと考えています(IClientMessageInspector)。私が試したコードは次のとおりです: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; 
} 

しかし私には "Unrecognized message version"というエラーが返されます。

+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; 

希望します。

関連する問題