8

ヘッダーやエラーを含む実際のメッセージをキャプチャする方法について明示的な指示がない限り、 WCF トレース ツールを使用して回答しないでください。このリンクは機能しません。

また、IClientMessageInspectorすべてのヘッダーを含めて(そうではありません)、解析しない障害要素を持つ応答を取得する方法を知らない限り、回答しないでください。

wcf より前の Web サービスでは、問題なく動作する を作成できましたSoapExtension

4

3 に答える 3

4

カスタムメッセージエンコーダを作成します。すべてのヘッダーにアクセスできます。ソリューションがどれだけ一般的であるかを判断するために、実際のエンコーダーのコンストラクターに収まるようにソリューションを作成する必要がある場合があります。

ほんの数日前、私はこのスレッドに「ラッパーエンコーダー」を実装しました。そのエンコーダーがメッセージを変更しました。これを行う必要はありません。私も行ったように、ログに記録してトランスポートに渡すことができます。

于 2012-05-22T15:38:42.813 に答える
2

IEndpointBehavior を実装するクラスを使用すると、受信/送信メッセージをトラップしてログに記録できます。

ここで例を参照してください http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iendpointbehavior.applydispatchbehavior.aspx

IDispatchMessageInspector を実装するクラスも必要です。

于 2012-05-22T19:28:28.013 に答える
1

私もこれを見つけまし

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

メッセージを表示するにはツールを使用する必要があるため、理想的ではありませんが、すべてのヘッダーや障害などを含む実際のメッセージをキャプチャしているようです.

于 2012-05-22T16:15:46.680 に答える