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