Проблема : Когда я использую свойство Order
атрибута HandleError
, сначала применяется номер заказа наивысший , а не наименьший первый.
Подробнее
Я хочу настроить свой контроллер для обработки исключений следующим образом:
- если тип исключения -
CustomException
, используйте представление «CustomError».
- в противном случае используйте представление «Ошибка» по умолчанию.
Используя шаблон проекта MVC по умолчанию, я сделал следующее:
- Удален
HandleErrorAttribute
из глобальных фильтров.
- Включены пользовательские ошибки в
web.config
.
Затем я добавляю эти атрибуты в класс HomeController
:
[HandleError(ExceptionType = typeof(Exception), View = "Error")]
[HandleError(ExceptionType = typeof(CustomException), View = "CustomError")]
И это прекрасно работает - если выдается CustomException
, отображается представление «CustomError»; если выдается Exception
, отображается вид «Ошибка».
Однако я думал, что свойство Order
в атрибуте HandleError
сделает вещи более явными. Со страницы MSDN :
Чем больше целочисленное значение, тем ниже приоритет фильтра
есть.
Исходя из этого, я бы подумал, что следующий код приведет к отображению представления «Ошибка» при любых обстоятельствах:
[HandleError(Order = 1, ExceptionType = typeof(Exception), View = "Error")]
[HandleError(Order = 2, ExceptionType = typeof(CustomException), View = "CustomError")]
Но это не тот случай; это вызывает то же поведение, что и когда свойство Order
не было указано. Если я поменяю местами ордера, , это приведет к отображению представления "Ошибка", даже если был выдан CustomException
.
По сути, фактический приоритет заказа, похоже, полностью противоположен документации. Я что-то не так делаю или это ошибка?