2

VB.NET を介して Web サービスを呼び出しています。バインディングを作成するために AddWebReference を実行しました。

WS 呼び出しが例外をスローすると、それをジェネリック Exception オブジェクトとしてキャッチできます Catch ex As Exception。ただし、実際にスローされた例外タイプとしてキャッチする方法がわかりません。

私のwsdlから

<wsdl:message name="FException">
    <wsdl:part name="fault" type="tns2:FException"/>
</wsdl:message>
<wsdl:message name="MyException">
    <wsdl:part name="fault" type="impl:MyException"/>
</wsdl:message>

<complexType name="FException">
    <sequence>
        <element name="errcode" type="xsd:int"/>
        <element name="errmessage" nillable="true" type="soapenc:string"/>
    </sequence>
</complexType>


<complexType name="MyException">
    <complexContent>
        <extension base="tns2:FException"><sequence/>
        </extension>
    </complexContent>
</complexType>

実際にスローされる例外は MyException です。ただし、AddWebreference は MyException という名前のクラスを作成しないようです。

 Catch ex As MyException

私にくれます

Type 'MyException' is not defined.

Axis を使用すると、Java で適切な例外をキャッチできます。

ここで VB.NET に欠けているものは何ですか? Add WebReference は Exception オブジェクトを生成しないように見えるので、それらを使用できません。

4

1 に答える 1

0

これに対する答えを考え出した。

Web サービスは、"Document/Literal" や "RPC/Literal" などの最新のエンコーディングではなく、"RPC/Encoded" を使用するかなり古い実装でした。dotnet スタブ ジェネレーターは RPC/Encoded をサポートしていません。したがって、問題。

于 2013-07-09T08:33:14.993 に答える