無効なエンベロープのために応答メッセージをインターセプトできません。残念ながら、WCFは "Unrecognized message version"例外をスローしています。 AfterReceiveReplyが呼び出される前に、応答XMLを修正する機会はありません。ストリームを傍受してこのXMLを修正するために使用できる低レベルの(または別の)呼び出しはありますか?それとも、カスタムBindingなどのレスポンスを処理するためのより良い方法がありますか?デシリアライズ前のSOAPメッセージの変更
私はIClientMessageInspector AfterReceiveReplyとIOperationBehaviorを試しましたが、これらの動作は両方とも例外がスローされた後に呼び出されます。
レスポンスは次のようになります。
<ENVELOPE>
<HEADER>
<ERROR_CODE>955</ERROR_CODE>
<ERROR_DESC>XML Parsing Failed: test:1:74 error: value '1231231230' does not match regular expression facet '\d{19,20}'</ERROR_DESC>
<ASYNCH_RESPONSE_INDICATOR>0</ASYNCH_RESPONSE_INDICATOR>
</HEADER>
<BODY>
<MY_METHOD_RESPONSE></MY_METHOD_RESPONSE>
</BODY>
</ENVELOPE>
IErrorHandlerインターフェイスを見てください。 https://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx –
@WilliamXifaras - サービス側向けです。 OPの問題はクライアント側です –