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>