WCF-exception-handling mit IErrorHandler

Ich bin grundsätzlich der Umsetzung der IErrorHandler Schnittstelle zu fangen alle Arten von Ausnahmen von der WCF-Dienst und sendet Sie an den client durch die Umsetzung der ProvideFault Methode.

Stehe ich vor einem entscheidenden Problem jedoch. Alle exceptions werden an den client gesendet als FaultException aber dies deaktiviert den client zum Umgang mit bestimmten Ausnahmen, die kann er haben den im service.

Betrachten: SomeException definiert wurde und geworfen in eine der OperationContract Implementierungen. Wenn die exception geworfen wird, seine umgewandelt, um einen Fehler mit dem folgenden code:

var faultException = new FaultException(error.Message);
MessageFault messageFault = faultException.CreateMessageFault();
fault = Message.CreateMessage(version, messageFault, faultException.Action);

Dieser sendet den Fehler als string, aber der Kunde hat zu fangen, eine Allgemeine Ausnahme wie:

try{...}
catch(Exception e){...}

und nicht:

try{...}
catch(SomeException e){...}

Nicht nur benutzerdefinierte Ausnahmen wie SomeException, aber system-Ausnahmen wie InvalidOperationException kann nicht gefangen werden mit dem oben beschriebenen Vorgang.

Irgendwelche Ideen auf, wie um dieses Verhalten zu implementieren?

InformationsquelleAutor p0lAris | 2013-07-31
Schreibe einen Kommentar