Sdílet prostřednictvím


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 tak, jak jsou (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é zpracování vyvolané výjimky. To se provádí jenom u chyb komunikace a proxy serveru nebo kanálu.

  • Použití kontraktů chyb

  • IErrorHandler Implementace rozhraní

  • Zpracování ServiceHost událostí

Kontrakty chyb

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 odeslané klientovi můžete řídit definováním kontraktu chyby a vrácením chyby 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 zpracování a vytváření sestav a rozšíření kontroly nad zpracováním chyb a generováním sestav

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. Příklad:

  1. Faulted

  2. UnknownMessageReceived

Další informace viz ServiceHost.