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 :
Le Web service récupère cette exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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é.")); }
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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")); }
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...) :
Lorsque que j'exécute, aucune MessageBox ne s'affiche et j'obtiens ceci au niveau de Visual Studio : (voir pj)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
ma classe pour ma FaultException est bien marquée par [DataContract].
Dans le service contract :
Je ne sais vraiment plus où chercher. J'ai déjà essayé pas mal de chôses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [OperationContract()] [FaultContract(typeof(FaultContract_MyException))] void ToDo();
Quelqu'un aurait-il une idée pour m'aider ?![]()
Partager