Подтвердить что ты не робот

В каком порядке используются фильтры, выполненные в asp.net mvc

В MVC мы можем украсить методы действий различными фильтрами, например

[HttpPost]
[Authorize]
public ActionResult mymethod(){}

HttpPost происходит от MethodSelectorAttribute (возможно, косвенно), а атрибут Authorize наследуется от ActionFilterAttribute.

Мой вопрос: в каком порядке они выполняются в конвейере запроса MVC? Я попытался найти поиск в исходном коде MVC, но не смог найти соответствующие биты кода.

4b9b3361

Ответ 1

Фильтры выполняются в следующем порядке:

  • Фильтры авторизации
  • Фильтры действий
  • Фильтры ответов
  • Фильтры исключений

Например, фильтры авторизации запускаются первыми, а фильтры исключений запускаются последними. В каждом типе фильтра значение Order определяет порядок выполнения. В каждом типе и порядке фильтра значение перечисления Scope указывает порядок фильтров. Это перечисление определяет следующие значения области фильтра (в том порядке, в котором они выполняются):

  • Первая
  • Global
  • контроллер
  • Действие
  • Last

Извлечен из MSDN

Ответ 2

Чтобы сэкономить некоторое время, вы устанавливаете порядок:

[MyCustomContextFilter(Order=1)]

Индекс основан на 0, поэтому вы можете делать 0, 1, 2 и т.д.

Следует отметить, что только потому, что фильтр находится в базовом классе, он не указывает MVC сначала применить его: (.