1

テスト用にセットアップしたコンソール アプリケーションから Java Web サービスを呼び出すサービス リファレンス (WCF クライアント) をセットアップしました。HTTPS を使用しています。私は Fiddler をセットアップしており、(Fiddler で) サービスから適切な値が送信および返されていることを確認できます。しかし、どのメソッドを呼び出しても、返される値は、文字列かオブジェクトかに関係なく、Null として返されます。

プロキシ クライアント マッピングが機能していないのか、それとも app.config の構成値を変更する必要があるのか​​わかりません。

app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="ResultsSOAP12Binding">
                    <textMessageEncoding messageVersion="Soap12" />
                </binding>
                <binding name="ResultsSOAP12Binding1">
                    <textMessageEncoding messageVersion="Soap12" />
                    <httpsTransport />
                </binding>
                <binding name="ResultsSOAP12Binding2">
                    <textMessageEncoding messageVersion="Soap12" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="https://services.acme.com/results"
                binding="customBinding" bindingConfiguration="ResultsSOAP12Binding1"
                contract="ResultsServiceReference.Result
        </client>
    </system.serviceModel>
</configuration>

コード:

static void CallResults()
        {
            var resultsRequest = new ResultsServiceReference.ResultsRequest();

            var client = new ResultsServiceReference.ResultsPortTypeClient("ResultsSOAP12BindingQSPort");

            Console.WriteLine("Call Results Service");

            ResultsServiceReference.ResultsBatch result = client.latestResults(resultsRequest);

            Console.WriteLine(result.Status);

        Console.ReadLine();

        }

このコードでは、変数resultは null ですが、Fiddler を見ると XML が表示されます。結果を使用しようとするまで、エラーは表示されません。

ところで、プロキシ クラス reference.cs の latestResults メソッド内にブレークポイントを設定しようとしましたが、デバッガーはそれに到達しません。

4

2 に答える 2

1

WCF 診断イベント トレースとメッセージ ログを構成して有効にしてから、テスト トランザクションを再実行し、サービス トレース ログ ファイルを確認することができます。次のリンクは、トレースとメッセージ ログを有効にする方法を示しています。

http://msdn.microsoft.com/en-us/library/ms751526.aspx

私たちの経験では、それ以外の場合は明らかなエラーを示さないサービスの不一致が、サービス トレース ファイルに表示されることがよくあります。

注: 次の属性が設定されているため、プロキシ クラス reference.cs 内のブレークポイントに到達しない場合があります。

[System.Diagnostics.DebuggerStepThroughAttribute()]
于 2013-09-30T13:16:12.660 に答える