2

関連付けられたreference.csファイル(WCFではない)を持つSOAPベースのWebサービスがあります。サービスが無効な応答を返しています。reference.csファイルには、ステップインしたいtestRequestメソッドがあります。私はサービスの制御が制限されているだけなので、results [0]行を自分のテスト応答でオーバーライドして、応答が無効である正確な理由を特定しようとしています。ただし、testRequestにステップインすることはできません。なぜだめですか?結果[0]とは正確には何ですか?文字列内のSoapXMLを使用して自分でキャストしようとしましたが、文字列からそのオブジェクトにキャストできないというメッセージが表示されます。この時点でのresults[0]は、文字列でない場合はどうなりますか?

    [System.Web.Services.Protocols.SoapHeaderAttribute("SecurityValue")]
    [System.Web.Services.Protocols.SoapHeaderAttribute("MessageHeaderValue")]
    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]
    [return: System.Xml.Serialization.XmlElementAttribute("TestResponse", Namespace="http:/test/Services")]
    public TestResponse testRequest([System.Xml.Serialization.XmlElementAttribute("TestRequest", Namespace="http://Test.com/TestServices")] TestRequestTestRequest1) {
        object[] results = this.Invoke("TestRequest", new object[] {
                    TestRequest1});
        return ((TestResponse)(results[0]));
    }

更新#1[ツール]=>[オプション]=>[デバッグ]=> [一般]に移動し、[マイコードのみを有効にする]のチェックを外すと、response.csにステップインできます。問題は、リクエストが私のPCに届くのに、この後「results」変数がnullになることです。Invokeが呼び出されます。今の私の質問は、this.Invokeが自分の応答を作成して挿入しているという呼び出しをどのように傍受できるかということです。開発者が実際のサービスにアクセスすることはできません。テストサービスを作成する必要があるかもしれません...

4

1 に答える 1

1

ハードコードされたSOAP応答を返すテストサービスを作成しました。それは私が応答の問題を診断するのに役立ちました。問題は、名前空間が欠落していることになりました

于 2012-10-29T12:00:04.483 に答える