2013-05-21 353 views
2

我正在通過VB.NET調用Web服務。我做了一個AddWebReference來創建綁定。VB.net和Web服務異常

當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. 

我能趕上合適的異常在Java中與軸。

我在VB.NET中錯過了什麼? Add WebReference似乎不會生成Exception對象,所以我不能使用它們。

+0

您是否嘗試過使用完整的命名空間? MyService.MyException例如 – James

+0

@James - 是同樣的錯誤。 – user93353

+0

如果您在服務上使用對象瀏覽器,您能看到那裏的MyException類型嗎? – James

回答

0

找出答案。

該webservice是一個相當舊的實現,它使用「RPC/Encoded」而不是像「Document/Literal」或「RPC/Literal」等更多當前的編碼。 dotnet存根生成器不支持RPC /編碼。因此,這個問題。