Udostępnij za pośrednictwem


Obsługa błędów programu WCF

Błędy napotkane przez aplikację WCF należą do jednej z trzech grup:

  1. Błędy komunikacji

  2. Błędy serwera proxy/kanału

  3. Błędy aplikacji

Błędy komunikacji występują, gdy sieć jest niedostępna, klient używa niepoprawnego adresu lub host usługi nie nasłuchuje przychodzących komunikatów. Błędy tego typu są zwracane do klienta jako CommunicationException lub CommunicationException-pochodne klasy.

Błędy serwera proxy/kanału to błędy występujące w kanale lub serwerze proxy. Błędy tego typu obejmują: próba użycia serwera proxy lub kanału, który został zamknięty, istnieje niezgodność kontraktu między klientem a usługą lub poświadczenia klienta są odrzucane przez usługę. Istnieje wiele różnych typów błędów w tej kategorii, zbyt wiele do wyświetlenia tutaj. Błędy tego typu są zwracane do klienta w stanie "is" (żadne przekształcenie nie jest wykonywane na obiektach wyjątku).

Błędy aplikacji występują podczas wykonywania operacji usługi. Błędy tego rodzaju są wysyłane do klienta jako FaultException lub FaultException<TDetail>.

Obsługa błędów w programie WCF jest wykonywana przez co najmniej jedną z następujących czynności:

  • Bezpośrednia obsługa zgłoszonych wyjątków. Odbywa się to tylko w przypadku błędów komunikacji i serwera proxy/kanału.

  • Używanie kontraktów błędów

  • Implementowanie interfejsu IErrorHandler

  • Obsługa zdarzeń ServiceHost

Kontrakty błędów

Kontrakty błędów umożliwiają definiowanie błędów, które mogą wystąpić podczas operacji usługi w sposób niezależny od platformy. Domyślnie wszystkie wyjątki zgłoszone w ramach operacji usługi zostaną zwrócone do klienta jako FaultException obiekt. Obiekt FaultException będzie zawierać bardzo mało informacji. Informacje wysyłane do klienta można kontrolować, definiując kontrakt o błędzie i zwracając błąd jako FaultException<TDetail>. Aby uzyskać więcej informacji, zobacz Określanie i obsługa błędów w kontraktach i usługach.

Ierrorhandler

Interfejs IErrorHandler umożliwia większą kontrolę nad sposobem reagowania aplikacji WCF na błędy. Zapewnia pełną kontrolę nad komunikatem o błędzie zwracanym do klienta i umożliwia wykonywanie niestandardowego przetwarzania błędów, takiego jak rejestrowanie. Aby uzyskać więcej informacji na temat IErrorHandler obsługi i raportowania błędów oraz rozszerzania kontroli nad obsługą błędów i raportowaniem

Zdarzenia ServiceHost

Klasa ServiceHost hostuje usługi i definiuje kilka zdarzeń, które mogą być potrzebne do obsługi błędów. Na przykład:

  1. Faulted

  2. UnknownMessageReceived

Aby uzyskać więcej informacji, zobacz ServiceHost.