Dela via


WCF-felhantering

De fel som påträffas av ett WCF-program tillhör en av tre grupper:

  1. Kommunikationsfel

  2. Proxy-/kanalfel

  3. 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:

  1. Faulted

  2. UnknownMessageReceived

Mer information finns i ServiceHost