Как мне перехватить все необработанные исключения, возникающие в 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?