ヘッダーやエラーを含む実際のメッセージをキャプチャする方法について明示的な指示がない限り、 WCF トレース ツールを使用して回答しないでください。このリンクは機能しません。
また、IClientMessageInspector
すべてのヘッダーを含めて(そうではありません)、解析しない障害要素を持つ応答を取得する方法を知らない限り、回答しないでください。
wcf より前の Web サービスでは、問題なく動作する を作成できましたSoapExtension
。
カスタムメッセージエンコーダを作成します。すべてのヘッダーにアクセスできます。ソリューションがどれだけ一般的であるかを判断するために、実際のエンコーダーのコンストラクターに収まるようにソリューションを作成する必要がある場合があります。
ほんの数日前、私はこのスレッドに「ラッパーエンコーダー」を実装しました。そのエンコーダーがメッセージを変更しました。これを行う必要はありません。私も行ったように、ログに記録してトランスポートに渡すことができます。
IEndpointBehavior を実装するクラスを使用すると、受信/送信メッセージをトラップしてログに記録できます。
IDispatchMessageInspector を実装するクラスも必要です。
私もこれを見つけました:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\wcfMessages.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="true"
maxMessagesToLog="1000000"
maxSizeOfMessageToLog="10000000"/>
</diagnostics>
</system.serviceModel>
メッセージを表示するにはツールを使用する必要があるため、理想的ではありませんが、すべてのヘッダーや障害などを含む実際のメッセージをキャプチャしているようです.