При включении MVC фильтров я понимаю, что они могут быть зарегистрированы в следующих местоположениях
- Global (FilterConfig.cs)
- Уровень контроллера
- Уровень действия
Я также знаю, что существует 4 типов и что они выполняются в следующем порядке:
- Фильтры авторизации
- Фильтры действий
- Фильтры ответов
- Фильтры исключений
Однако я немного запутался в приоритете:
- Расположены ли местоположения в указанном порядке?
- Предполагается, что местоположение выполняется в порядке, который имеет приоритет: тип или местоположение?
- Что произойдет, если несколько фильтров один и тот же тип объявлен в том же месте? Выполняются ли они в порядке, в котором они определены?
Например, если у меня 6 фильтров, как показано ниже, в каком порядке они будут выполняться?
// FilterConfig.cs
filters.Add(new AuthorizationFilter());
filters.Add(new ActionFilter());
-
// MyController.cs
[AuthorizationFilter2]
[ActionFilter2]
public class MyController
{
[AuthorizationFilter3]
[ActionFilter3]
public ActionResult MyAction()
{
return foo;
}
}