Wyjątki którymi się posługujemy w WCF są typu FaultException oraz generyczna odmiana FaultException<T>. Aby zaznaczyć, że metoda może zwrócić wyjątek należy oznaczyć ją atrybutem FaultContract(typeof(ExceptionType)):
Code:
Metodę następnie możemy zaimplementować w następujący sposób:
Code:
Ogólnie przyjęte jest, że nie należy wysyłać do klienta oryginalnego wyjątku. Zobaczmy na poniższy diagram:
Z diagramu wynika, że oryginalny wyjątek przed wysłaniem do klienta musi zostać przetworzony. Nie przekazujemy oryginalnego wyjątku klientowi, aby nie ujawniać mu wewnętrznej struktury naszego serwisu. Ogólnie przyjmuje się, że po stronie serwisu:
- przechwytujemy zawartość wyjątku, kto i kiedy go spowodował oraz oryginalne żądanie
- logujemy zawartość Exception do bazy lub pliku
- tworzymy identyfikator zgłoszenia - ułatwi to rozmowę pomocy technicznej z danym klientem
- wiadomość typu: "W serwisie wystąpił błąd..."
- kod błędu (np HTTP 5xx)
- dodajemy także informacje kontaktowe z pomocą techniczną oraz identyfikator problemu
Aplikacja kliencka następnie może przechwycić wyjątek, tak jak każdy inny. Przykładowy kod klienta:
Code:
Brak komentarzy:
Prześlij komentarz