Порядок выполнения фильтров¶
Конвейер фильтров содержит пять этапов, которые всегда выполняются в фиксированном порядке, как описано здесь и здесь. На каждом этапе может быть несколько фильтров одного типа, при этом они могут иметь несколько областей действия, в зависимости от того, как их добавили.
Рассмотрим порядок исполнения фильтров в рамках определенного этапа, и то, как на него влияет область действия.
Порядок выполнения фильтров по умолчанию¶
Важно помнить, что фильтры ресурсов , действий и результатов выполняются дважды — метод *Executing до метода действия, и *Executed после метода. А фильтры страниц реализуют три метода.
Порядок выполнения фильтров по умолчанию зависит от области действия фильтра, как показано на рисунке (для фильтра ресурсов)

Фильтры выполняются, начиная с самой широкой области (глобальные), до самой узкой (действие) при выполнении метода *Executing. Для метода *Executed выполнение происходит в обратном порядке.
Для страниц Razor глобальные фильтры сначала выполняют методы *Executing и PageHandlerSelected, затем их же выполняют фильтры страниц. Для методов *Executed порядок обратный.
Переопределение порядка выполнения фильтров по умолчанию с помощью интерфейса IOrderedFilter¶
Для точного контроля порядка выполнения фильтров необходимо реализовать интерфейс IOrderedFilter:
Конвейер фильтров упорядочивает фильтры определенного этапа сначала на основе этого значения, от наименьшего до наивысшего, затем использует порядок фильтров по умолчанию для фильтров с одинаковыми значениями. См. рисунок:

Все фильтры, поставляемые с ASP.NET Core, имеют
Order = 0.
Дата создания : 3 октября 2022 г.