ASP.Net MVC 3 - Похоже, что порядок в атрибуте HandleError работает в обратном порядке?

Проблема :Когда я использую свойство Order атрибута HandleError , сначала применяется наивысший порядковый номер, а не самый низкий.

Подробности

] Я хочу настроить свой контроллер для обработки исключений следующим образом:

  • если тип исключения - CustomException , используйте представление «CustomError».
  • в противном случае используйте значение по умолчанию «Ошибка "представление.

Используя шаблон проекта MVC по умолчанию, я сделал следующее:

  • Удален HandleErrorAttribute из глобальных фильтров.
  • Включены настраиваемые ошибки в сети .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 .

По сути, фактический приоритет порядка кажется точно таким же противоположность документации. Я что-то делаю не так или это ошибка?

5
задан Graham Clark 29 July 2011 в 14:47
поделиться