WCF-hibakezelés
A WCF-alkalmazások által észlelt hibák három csoport egyikéhez tartoznak:
Kommunikációs hibák
Proxy-/csatornahibák
Alkalmazáshibák
Kommunikációs hibák akkor fordulnak elő, ha egy hálózat nem érhető el, az ügyfél helytelen címet használ, vagy a szolgáltatás gazdagépe nem figyeli a bejövő üzeneteket. Az ilyen típusú hibákat a rendszer -származtatott osztályként vagy CommunicationException-származtatott osztályként CommunicationException adja vissza az ügyfélnek.
A proxy-/csatornahibák olyan hibák, amelyek a csatornán vagy a proxyn belül fordulnak elő. Az ilyen típusú hibák közé tartoznak a következők: bezárt proxy vagy csatorna használata, az ügyfél és a szolgáltatás közötti szerződési eltérés, vagy az ügyfél hitelesítő adatait a szolgáltatás elutasítja. Ebben a kategóriában sok különböző típusú hiba van, túl sok a listához. Az ilyen típusú hibákat a rendszer az ügyfélnek adja vissza (a kivételobjektumokon nem történik átalakítás).
A szolgáltatásművelet végrehajtása során alkalmazáshibák lépnek fel. Az ilyen típusú hibákat a rendszer elküldi az ügyfélnek FaultExceptionFaultException<TDetail>.
A WCF-ben a hibakezelést az alábbiak közül egy vagy több hajtja végre:
A kidobott kivétel közvetlen kezelése. Ez csak kommunikációs és proxy-/csatornahibák esetén történik.
Hibaszerződések használata
Az interfész implementálása IErrorHandler
Események kezelése ServiceHost
Tartalék szerződések
A hibaszerződésekkel platformfüggetlen módon határozhatja meg a szolgáltatás működése során előforduló hibákat. Alapértelmezés szerint a szolgáltatásműveletből származó összes kivételt objektumként FaultException adja vissza az ügyfélnek. Az FaultException objektum nagyon kevés információt tartalmaz. A hibaszerződés meghatározásával és a hiba FaultException<TDetail>visszaadásával szabályozhatja az ügyfélnek küldött információkat. További információ: Szerződések és szolgáltatások hibáinak megadása és kezelése.
IErrorHandler
A IErrorHandler felület lehetővé teszi, hogy jobban szabályozhassa, hogyan reagál a WCF-alkalmazás a hibákra. Teljes körű vezérlést biztosít az ügyfélnek visszaadott hibaüzenet felett, és lehetővé teszi egyéni hibafeldolgozás, például a naplózás végrehajtását. További információ a hibakezelés és a jelentéskészítés vezérlésének kibővítéséről IErrorHandler
ServiceHost-események
Az ServiceHost osztály szolgáltatásokat üzemeltet, és több olyan eseményt határoz meg, amelyekre szükség lehet a hibák kezeléséhez. Példa:
További információ: ServiceHost