Как мне перехватить все необработанные исключения, возникающие в 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
хорошо справилась с этой задачей в веб-формах и MVC - что я могу использовать в веб-API?