Zpracování chyb WCF

Chyby, ke kterým došlo v aplikaci WCF, patří do jedné ze tří skupin:

  1. Chyby komunikace

  2. Chyby proxy serveru nebo kanálu

  3. Chyby aplikace

K chybám komunikace dochází v případě, že síť není k dispozici, klient používá nesprávnou adresu nebo hostitel služby naslouchá příchozím zprávám. Chyby tohoto typu jsou vráceny klientovi jako CommunicationException nebo CommunicationException-odvozené třídy.

Chyby proxy serveru nebo kanálu jsou chyby, ke kterým dochází v rámci samotného kanálu nebo proxy serveru. Mezi chyby tohoto typu patří: pokus o použití proxy serveru nebo kanálu, který byl uzavřen, existuje neshoda kontraktů mezi klientem a službou nebo přihlašovací údaje klienta jsou odmítnuty službou. V této kategorii existuje mnoho různých typů chyb, příliš mnoho na seznam. Chyby tohoto typu se vrátí klientovi as-is (u objektů výjimky se neprovádí žádná transformace).

Při provádění operace služby dochází k chybám aplikace. Chyby tohoto typu se odesílají klientovi jako FaultException nebo FaultException<TDetail>.

Zpracování chyb ve WCF provádí jedna nebo více z následujících akcí:

  • Přímé řešení výjimky, která byla vyvolána. To se provádí jenom u chyb komunikace a proxy serveru nebo kanálu.

  • Použití smluv o chybách

  • Implementace IErrorHandler rozhraní

  • Zpracování ServiceHost událostí

Smlouvy o chybách

Kontrakty chyb umožňují definovat chyby, ke kterým může dojít během provozu služby nezávisle na platformě. Ve výchozím nastavení se všechny výjimky vyvolané v rámci operace služby vrátí klientovi jako FaultException objekt. Objekt FaultException bude obsahovat velmi málo informací. Informace odesílané klientovi můžete řídit tím, že stanovíte kontrakt chyby a vrátíte tuto chybu jako FaultException<TDetail>. Další informace naleznete v tématu Určení a zpracování chyb v kontraktech a službách.

IErrorHandler

Rozhraní IErrorHandler umožňuje větší kontrolu nad tím, jak vaše aplikace WCF reaguje na chyby. Poskytuje úplnou kontrolu nad chybovou zprávou vrácenou klientovi a umožňuje provádět vlastní zpracování chyb, jako je protokolování. Další informace o IErrorHandler a rozšíření kontroly nad zpracováním chyb a reportováním

Události servicehost

ServiceHost Třída hostuje služby a definuje několik událostí, které mohou být potřeba pro zpracování chyb. Například:

  1. Faulted

  2. UnknownMessageReceived

Další informace najdete v tématu ServiceHost