IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

[C#] Service Web et SoapException


Sujet :

Services Web

  1. #1
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut [C#] Service Web et SoapException
    Bonjour,

    J'ai créé un service web d'un coté et une application cliente de l'autre.

    En cas d'erreur du service j'aimerai lancer un exception SOAP, que je puisse 'catcher' dans mon application cliente.

    voilà ce que je fais côté service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [WebMethod]
    public string Test(string str)
    {
         if (string.IsNullOrEmpty(str))
              throw new SoapException("str null or empty", SoapException.ClientFaultCode);
         else
              return str;
    }
    et côté client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    string str = "";
    try
    {
         myWS.Test(str)
    }
    catch (SoapException soapEx)
    {
         //[...]
    }
    catch (Exception ex)
    {
         //[...]
    }
    Le problème c'est que je ne passe jamais dans le premier catch alors que je lève bien une exception SOAP...

    Pour info le message de ex (System.Exception {System.ServiceModel.FaultException})
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ex.message = "System.Web.Services.Protocols.SoapException: str null or empty
       à WebService1.Service1.Test(String str) dans [...]/Service1.asmx.cs:ligne 25"
    et la réponse du webservice (récupéréé via l'appli test client WCF)
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" />
      <soap:Body>
        <soap:Fault>
          <faultcode>soap:Client</faultcode>
          <faultstring>System.Web.Services.Protocols.SoapException: str null or empty
       à WebService1.Service1.Test(String str) dans ...\Service1.asmx.cs:ligne 25</faultstring>
          <detail />
        </soap:Fault>
      </soap:Body>
    </soap:Envelope>

  2. #2
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut
    j'ai repris directement le code de microsoft dans MSDN : http://msdn.microsoft.com/fr-fr/libr...8VS.80%29.aspx
    mais de la même manière qu'avant l'appel de la méthode myThrow (dans l'exemple de msdn) lève une exception de type FaultException et non de type SoapException (PS : InnerException est null).

    ça me semble bizarre qu'il soit impossible de récupérer une SoapException levée par un service web.

  3. #3
    Modérateur
    Avatar de toopac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 940
    Par défaut
    J'ai finalement résolu mon problème, donc je poste ce que j'ai fais et mets ce post en résolu, mais si quelqu'un à une explication, je suis preneur, parce que j'ai juste adapté une obscure piste récupérée sur un forum anglophone.

    Dans mon projet de test, j'ai simplement ajouté mon service web en tant que référence web, plutôt qu'en tant que référence de service.

    ("Ajouter une référence de service..." --> bouton "Avancé" --> bouton "Ajouter une référence Web...")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Livre : XML et les services Web
    Par cyberzoide dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/05/2007, 17h12
  2. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 21h45
  3. [VB.Net] Comment renvoyer un SQLDataReader par un service Web ?
    Par moufles03 dans le forum Services Web
    Réponses: 4
    Dernier message: 13/07/2004, 11h55
  4. [C#] Comment passer un paramètre Boolean au service Web ?
    Par ramalho dans le forum Services Web
    Réponses: 3
    Dernier message: 07/06/2004, 17h31
  5. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo