WCF-felhantering
De fel som påträffas av ett WCF-program tillhör en av tre grupper:
Kommunikationsfel
Proxy-/kanalfel
Programfel
Kommunikationsfel uppstår när ett nätverk inte är tillgängligt, en klient använder en felaktig adress eller om tjänstvärden inte lyssnar efter inkommande meddelanden. Fel av den här typen returneras till klienten som CommunicationException eller CommunicationException-härledda klasser.
Proxy-/kanalfel är fel som uppstår i själva kanalen eller proxyn. Fel av den här typen är: försök att använda en proxy eller kanal som har stängts, ett kontraktsmatchningsfel finns mellan klienten och tjänsten eller klientens autentiseringsuppgifter avvisas av tjänsten. Det finns många olika typer av fel i den här kategorin, för många för att listas här. Fel av den här typen returneras till klienten som den är (ingen transformering utförs på undantagsobjekten).
Programfel uppstår under körningen av en tjänståtgärd. Fel av den här typen skickas till klienten som FaultException eller FaultException<TDetail>.
Felhantering i WCF utförs av en eller flera av följande:
Hantera undantaget direkt. Detta görs endast för kommunikations- och proxy-/kanalfel.
Använda felkontrakt
Implementera gränssnittet IErrorHandler
Hantera ServiceHost händelser
Felkontrakt
Med felkontrakt kan du definiera de fel som kan inträffa under tjänståtgärden på ett plattformsoberoende sätt. Som standard returneras alla undantag som genereras från en tjänståtgärd till klienten som ett FaultException objekt. Objektet FaultException innehåller mycket lite information. Du kan styra informationen som skickas till klienten genom att definiera ett felkontrakt och returnera felet som en FaultException<TDetail>. Mer information finns i Ange och hantera fel i kontrakt och tjänster.
IErrorHandler
Med IErrorHandler gränssnittet får du mer kontroll över hur ditt WCF-program svarar på fel. Det ger dig fullständig kontroll över det felmeddelande som returneras till klienten och gör att du kan utföra anpassad felbearbetning, till exempel loggning. Mer information om IErrorHandler och utökar kontroll över felhantering och rapportering
ServiceHost-händelser
Klassen ServiceHost är värd för tjänster och definierar flera händelser som kan behövas för att hantera fel. Till exempel:
Mer information finns i ServiceHost