Obsługa błędów programu WCF
Błędy napotkane przez aplikację WCF należą do jednej z trzech grup:
Błędy komunikacji
Błędy serwera proxy/kanału
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:
Aby uzyskać więcej informacji, zobacz ServiceHost.