¿Cómo puedo detectar todas las excepciones no controladas que se producen en ASP.NET Web Api para poder registrarlas?
Hasta ahora lo he intentado:
- Crea y registra un
ExceptionHandlingAttribute
- Implementar un
Application_Error
método enGlobal.asax.cs
- Suscribirse a
AppDomain.CurrentDomain.UnhandledException
- Suscribirse a
TaskScheduler.UnobservedTaskException
El ExceptionHandlingAttribute
maneja con éxito las excepciones que se lanzan dentro de los métodos de acción del controlador y los filtros de acción, pero no se manejan otras excepciones, por ejemplo:
- Excepciones lanzadas cuando un
IQueryable
método devuelto por una acción no se ejecuta - Excepciones lanzadas por un controlador de mensajes (es decir
HttpConfiguration.MessageHandlers
) - Excepciones lanzadas al crear una instancia de controlador
Básicamente, si una excepción va a provocar que se devuelva al cliente un error interno del servidor 500, quiero que se registre. La implementación Application_Error
hizo bien este trabajo en Web Forms y MVC: ¿qué puedo usar en Web Api?