1

WCF SOAP クライアントをデバッグしています。クライアントを変更できますが、サーバーを制御することはできません。クライアントから送信されたときに SoapUI で機能するメッセージが失敗する理由を見つけるために、送受信された実際のメッセージを調べたいと思います。

通信は SSL 経由であるため、Wireshark を使用してネットワーク上のメッセージを検査することはできません。

( で) wcf トレースを有効にしましlogEntireMessage="true"たが、膨大な量のデータがログに記録される一方で、実際の応答ペイロードがログに記録されていないようです。... stream ...Trace Viewerでは " " と表示されるだけです。また、トレースで送信メッセージの HTTP ヘッダーが見つからないようです。

実際のメッセージの検査に近づく方法を知っている人はいますか?

編集: Fiddler は問題を見つけるのに役立ちました。(これは、ペイロード内の UTF-8 バイト順マークであり、サーバーが気に入らなかったものです。) 一方、WFC トレースは、この種の問題を見つけるには「高レベル」すぎます。

4

1 に答える 1

5

1 つのオプションは、Fiddler を使用することです。もう1つのオプションはWCFログです(あなたが言ったように)。トランスポートレベルとメッセージレベルの両方でログに記録するようにマークしてください。これが私にとってうまくいくものです:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
                <listeners>
                    <add type="System.Diagnostics.DefaultTraceListener" name="Default">
                        <filter type="" />
                    </add>
                    <add name="ServiceModelMessageLoggingListener">
                        <filter type="" />
                    </add>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add initializeData="C:\messages.svclog"
                type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
                <filter type="" />
            </add>
        </sharedListeners>
    </system.diagnostics>
    <system.serviceModel>
        <diagnostics>
            <messageLogging logEntireMessage="true" logMalformedMessages="true"
                logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
        </diagnostics>
    </system.serviceModel>
</configuration>
于 2013-08-19T17:16:04.697 に答える