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