【问题标题】:VB.net and Webservices ExceptionVB.net 和 Web 服务异常
【发布时间】:2013-05-21 06:40:11
【问题描述】:

我正在通过 VB.NET 调用 Web 服务。我已经完成了 AddWebReference 来创建绑定。

当 WS 调用引发异常时,我能够将其作为通用异常对象 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 对象,因此我无法使用它们。

【问题讨论】:

  • 您是否尝试过使用完整的命名空间?以 MyService.MyException 为例
  • @James - 是的,同样的错误。
  • 如果你在服务上使用对象资源管理器,你能看到那里的 MyException 类型吗?
  • @James - 不,我没看到。
  • 如果不存在,则无法使用。服务引用或服务本身可能有问题?我无法从 WSDL 中分辨出来。

标签: .net vb.net web-services visual-studio encoding


【解决方案1】:

想出了这个问题的答案。

Web 服务是一个相当古老的实现,它使用“RPC/Encoded”而不是更当前的编码,如“Document/Literal”或“RPC/Literal”。 dotnet 存根生成器不支持 RPC/Encoded。因此问题。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多