Come faccio a rilevare tutte le eccezioni non gestite che si verificano in ASP.NET Web Api in modo da poterle registrare?
Finora ho provato:
- Crea e registra un file
ExceptionHandlingAttribute
- Implementa un
Application_Error
metodo inGlobal.asax.cs
- Iscriviti a
AppDomain.CurrentDomain.UnhandledException
- Iscriviti a
TaskScheduler.UnobservedTaskException
La ExceptionHandlingAttribute
gestisce con successo le eccezioni che vengono gettati all'interno dei metodi di azione di controllo e filtri d'azione, ma altre eccezioni non sono gestiti, per esempio:
- Eccezioni generate quando un
IQueryable
restituito da un metodo di azione non viene eseguito - Eccezioni generate da un gestore di messaggi (cioè
HttpConfiguration.MessageHandlers
) - Eccezioni generate durante la creazione di un'istanza del controller
Fondamentalmente, se un'eccezione sta per causare la restituzione di un errore interno del server 500 al client, voglio che venga registrato. L'implementazione ha Application_Error
svolto bene questo lavoro in Web Forms e MVC: cosa posso usare in Web Api?