У меня есть некоторый код в моем приложении, который мне нужно выполнять при каждом запросе, до того, как что-либо еще выполнит (даже до аутентификации). До сих пор я использовал событие Application_BeginRequest
в моем Global.asax, и это работало нормально. Но этот код должен попасть в базу данных, и по какой-то причине делать это из Global.asax не совсем правильно. Кроме того, используемый мной nuget Ninject.MVC3 не будет вводить зависимости в мой ct HapppApplication.
Итак, я решил переместить этот код в собственный глобальный фильтр действий. Сейчас у меня проблема в том, что независимо от того, какой Order или FilterScope я предоставляю этому фильтру, я не могу заставить его работать первым; мой фильтр авторизации всегда превосходит его. MSDN , кажется, подтверждает это:
Фильтр заказа
Фильтры работают в следующем порядке:
- Фильтры авторизации
- Фильтры действий
- Фильтры ответов
- Фильтры исключений
Например, запускаются фильтры авторизации
первый и исключительный фильтры запускаются последними.
В каждом типе фильтра, порядок
значение указывает порядок выполнения. В
каждый тип фильтра и порядок, область применения
значение перечисления указывает порядок
для фильтров.
Я знаю, что могу использовать HttpModule, но это не очень MVCish , поэтому я пытаюсь исчерпать все возможности, прежде чем идти по этому пути, что приводит к моему вопросу:
Существует ли эквивалент BeginRequest для фильтров глобальных действий?