2013-05-21 4 views
2

J'appelle un service Web via VB.NET. J'ai fait un AddWebReference pour créer les liaisons.Exception VB.net et Webservices

Lorsqu'un appel WS déclenche une exception, je peux l'attraper en tant qu'objet d'exception générique Catch ex As Exception. Cependant, je ne suis pas capable de comprendre comment l'attraper en tant que type d'exception effectivement lancé.

De mon 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> 

L'exception réelle est jeté MyException. Cependant, le AddWebreference ne semble pas créer une classe nommée MyException, donc en utilisant

Catch ex As MyException 

me donne

Type 'MyException' is not defined. 

Je suis en mesure de prendre la bonne exception en Java avec Axis.

Qu'est-ce qui me manque ici dans VB.NET? L'ajout de WebReference ne semble pas générer les objets Exception, donc je ne peux pas les utiliser.

+0

Avez-vous essayé d'utiliser l'espace de noms complet? MyService.MyException par exemple – James

+0

@James - oui même erreur. – user93353

+0

Si vous utilisez l'explorateur d'objets sur le service, pouvez-vous voir le type MyException dans ce service? – James

Répondre

0

Compris la réponse à cette question. Le webservice était une implémentation plutôt ancienne qui utilisait "RPC/Encoded" au lieu des codages les plus courants comme "Document/Literal" ou "RPC/Literal". Les générateurs de points dotnet ne prennent pas en charge RPC/Encoded. D'où le problème.