Jak złapać wszystko nieobsłużone wyjątki występujące w ASP.NET Web Api, aby móc je rejestrować?
Do tej pory próbowałem:
- Utwórz i zarejestruj
ExceptionHandlingAttribute
- Zaimplementuj
Application_Error
metodę w programieGlobal.asax.cs
- Subskrybuj
AppDomain.CurrentDomain.UnhandledException
- Subskrybuj
TaskScheduler.UnobservedTaskException
ExceptionHandlingAttribute
Powodzeniem obsługuje wyjątków, które są generowane wewnątrz metod działania kontrolera i filtrów działania, ale inne wyjątki nie są obsługiwane, na przykład:
- Wyjątki zgłaszane, gdy wykonanie
IQueryable
zwrócone przez metodę akcji nie powiedzie się - Wyjątki zgłoszone przez program obsługi komunikatów (tj.
HttpConfiguration.MessageHandlers
) - Wyjątki zgłaszane podczas tworzenia instancji kontrolera
Zasadniczo, jeśli wyjątek spowoduje zwrócenie do klienta wewnętrznego błędu serwera 500, chcę, aby był on rejestrowany. Wdrożenie Application_Error
wykonało tę pracę dobrze w formularzach sieci Web i MVC - czego mogę używać w interfejsie Web Api?