Ссылка в ответе @ HectorCorrea на данный момент неактивна, вот содержимое, извлеченное и суммированное из текущего кэша Google (на случай, если это также произойдет):
Фильтры выполняются в следующем порядке:
- Фильтры авторизации
- Фильтры действий
- Фильтры ответа / результата
- Фильтры исключений
В каждом фильтре вы можете указать свойство Order. (Все фильтры являются производными от абстрактного класса FilterAttribute, и этот класс имеет свойство Order). Это свойство обеспечит работу фильтра в определенном порядке.
например:
[AuthorizationFilterA(Order=2)]
[AuthorizationFilterB(Order=1)]
public ActionResult Index()
{
return View();
}
Там также FilterScope
, и по умолчанию фильтр с наименьшей областью действия запускается первым, когда порядок такой же (или не указан):
namespace System.Web.Mvc {
public enum FilterScope {
First = 0,
Global = 10,
Controller = 20,
Action = 30,
Last = 100,
}
}
Если порядок не указан, его значение равно -1 (первый, а не последний).
Сами контроллеры могут быть фильтрами и будут работать с порядком Int32.MinValue