1 pièce(s) jointe(s)
FaultException<T> non détéctée sur le client
Bonjour,
J'ai un problème concernant les FaultException<>.
Mon Service utilise une classe "métier" pour l'accès aux données. Cette classe remonte les exceptions relatives à la BDD (exemple: clé primaire dupliquée).
Pour simplifier :
Code:
1 2 3 4 5 6 7 8
| try
{
db.SaveChanges();
}
catch (Exception e)
{
throw (new Exception("L'ID (nom d'élément) est déjà utilisé."));
} |
Le Web service récupère cette exception :
Code:
1 2 3 4 5 6 7 8 9
| try
{
biz.AjouterElement(elem);
}
catch (Exception e)
{
throw new FaultException<FaultContract_MyException>
(new FaultContract_MyException("Error msg"));
} |
Et comme on le voit, il la retransmet vers le client (j'ai ici grandement simplifié en prenant toutes les exceptions, juste pour ma phase de test).
Maintenant lorsque le client appelle le Web Service et fais se déclencher l'exception, ce dernier ne reçoit JAMAIS ma FaultException en retour (ça ne marche pas non plus avec une simple FaultException, ni une Exception...) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| try
{
WcfClient.ToDo() ;
}
catch (FaultException<FaultContract_MyException> ex)
{
MessageBox.Show(ex.Message);
}
catch (FaultException<int> pp)
{
MessageBox.Show(pp.Message);
}
catch (Exception eo)
{
MessageBox.Show(eo.Message);
} |
Lorsque que j'exécute, aucune MessageBox ne s'affiche et j'obtiens ceci au niveau de Visual Studio : (voir pj)
ma classe pour ma FaultException est bien marquée par [DataContract].
Dans le service contract :
Code:
1 2 3
| [OperationContract()]
[FaultContract(typeof(FaultContract_MyException))]
void ToDo(); |
Je ne sais vraiment plus où chercher. J'ai déjà essayé pas mal de chôses.
Quelqu'un aurait-il une idée pour m'aider ? ;)