Рекомендации по обработке ошибок asp.net mvc
Я ищу стандартный способ обработки ошибок в asp.net mvc 2.0 или 3.0
- 404 обработчик ошибок
- Обработчик ошибок исключения области контроллера
- Обработчик ошибок исключения глобальных областей
Ответы
Ответ 1
Для ошибок области контроллера попробуйте использовать настраиваемый атрибут Exception i.e.
public class RedirectOnErrorAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
// Don't interfere if the exception is already handled
if(filterContext.ExceptionHandled)
return;
//.. log exception and do appropriate redirects here
}
}
Затем украсьте контроллеры атрибутом, и обработка ошибок должна быть вашей
[RedirectOnError]
public class TestController : Controller
{
//.. Actions etc...
}
Не помогает, если ошибка связана с маршрутизацией, т.е. она не может найти контроллер в первую очередь. Для этого попробуйте обработчик ошибки приложения в Global.asax i.e.
protected void Application_Error(object sender, EventArgs e)
{
//.. perhaps direct to a custom error page is here
}
Я не знаю, была ли это "лучшая практика". Работает.
Ответ 2
Не знаете о лучших практиках и в зависимости от того, что вы хотите сделать с ошибкой, может ли простым решением не использовать параметр customErrors в файле web.config?
Для обнаружения необработанных ошибок я иногда использую метод Application_Error в файле Global.asax.
Кроме того, посмотрите на сообщение SO <
Ответ 3
Здесь - самый подробный ответ на часть вашего вопроса 404. Несмотря на основную тему, это 404, это даст вам представление о том, как применить это к другим типам ошибок.
Хотя я не могу четко сформулировать это как "наилучшую практику", так как вам понадобится контроллер супертипа уровня с этим подходом. Я лучше поймаю те HttpException
в Global.asax
. Но по большей части это отличный гид.
Что касается произвольных исключений в вашем MVC-приложении, не забывайте о HandleErrorAttribute
.