1

Я не могу получить атрибут [HandleError] в MVC 5 для работы.Как заставить атрибут HandleError работать без настройки web.config (customErrors)?

У меня есть этот контроллер

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult WelcomePage() 
    { 
     throw new Exception("Oops!"); 
     return View(); 
    } 
} 

Что дает желтый экран смерти.

Если добавить в web.config

<system.web> 
    <customErrors mode="On" /> 
</system.web> 

это работает. Но если я удалю [HandleError], он все равно работает, поэтому он устанавливает в web.config более высокий presedense, я думаю.

Но не можете ли вы использовать только [HandleError], не полагаясь на некоторые настройки web.config?

ответ

1

Исключения ручки HandleError фильтра только если CustomErrors включен в web.config

видеть эту ссылку для получения более подробной информации: http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc

+0

Так что люди добавить атрибут HandleError или не? Я имею в виду ... Я все еще попадаю на страницу с ошибкой, без [HandleError]. Я ожидал бы получить что-то дополнительное, но я могу ошибаться? – radbyx

+1

О, ладно, я думаю, что понял. Я должен установить «customErrors» в On, как вы задокументировали. И причина, по которой это работает без [HandleError], - по дизайну. Но если бы я хотел указать его как «[HandleError (Exception = typeof (DbException), View =« DatabaseError »)]« Мне нужно написать атрибут. – radbyx

+1

Фильтр HandleError будет обрабатывать ошибки, возникающие на уровне контроллера. Существует еще один способ обработки ошибок контроллера, кроме использования фильтра HandleError, который должен переопределить функцию на контроллере, который вызывается (OnException). – Ala

Смежные вопросы