Как я могу поймать все необработанные исключения, которые происходят в ASP.NET Web Api, чтобы я мог их зарегистрировать?
До сих пор я пробовал:
- Создайте и зарегистрируйте
ExceptionHandlingAttribute
- Внедрить метод
Application_Error
вGlobal.asax.cs
- Подпишитесь на
AppDomain.CurrentDomain.UnhandledException
- Подпишитесь на
TaskScheduler.UnobservedTaskException
ExceptionHandlingAttribute
успешно обрабатывает исключения, которые генерируются в методах действий контроллера и фильтрах действий, но другие исключения не обрабатываются, например:
- Исключения, возникающие, когда
IQueryable
, возвращаемый методом действия, не выполняется - Исключения, отправленные обработчиком сообщений (т.е.
HttpConfiguration.MessageHandlers
) - Исключения, создаваемые при создании экземпляра контроллера
В принципе, если исключение приведет к тому, что 500 Internal Server Error будет возвращено клиенту, я хочу, чтобы он был зарегистрирован. Реализация Application_Error
хорошо выполняла эту работу в Web Forms и MVC - что я могу использовать в Web Api?