#c# #asp.net-web-api #error-handling
#c# #asp.net-веб-api #обработка ошибок
Вопрос:
Хотите вернуть пользовательскую страницу ошибок, а не желтый экран, для ошибок в проекте WebAPI, которые происходят на ранней стадии разработки.
Я заменил стандартный обработчик IExceptionHandler.
который обрабатывает больше ошибок, чем фильтры исключений, которые не обрабатывают
- Ошибка внутри фильтра исключений
- Исключение, связанное с маршрутизацией
- Ошибка внутри класса обработчиков сообщений
- Ошибка в конструкторе контроллера
Однако не все исключения обрабатываются путем замены обработчика IExceptionHandler
Например, если я выдаю ошибку в Application_BeginRequest (просто пример ошибки, возникающей на ранней стадии конвейера), это не улавливается, и я получаю желтый экран. При включенных пользовательских ошибках это урезанный желтый экран, но все же желтый экран.
Как я могу обработать все ошибки (даже на ранней стадии конвейера) и вернуть пользовательскую ошибку JSON с правильным кодом ответа, как это делается, когда срабатывает пользовательский обработчик исключений.
Некоторые статьи http://www.c-sharpcorner.com/article/exception-handling-in-asp-net-web-api/
https://www.exceptionnotfound.net/the-asp-net-web-api-exception-handling-pipeline-a-guided-tour/
https://www.jayway.com/2016/01/08/improving-error-handling-asp-net-web-api-2-1-owin/ (Я не использую OWIN, но включен для справки)
Я могу перехватить ошибку в событии Global.asax Application_Error
Комментарии:
1. Я думаю, вы стараетесь изо всех сил, если на ранней стадии возникает ошибка, то, несомненно, вы написали что-то не так, и код не будет работать. Рад, что ошибаюсь в этом, хотя
Ответ №1:
Что вы могли бы сделать, так это вернуть ответ json в методе application_error в global.asax с пустым объектом или иметь параметр 0 и т.д.