При запуске метода HttpModule Init ASP.NET интегрированный режим?
Я написал HttpModule, который является поставщиком сеансов NHibernate. Он просто открывает SessionFactory в методе Init HttpModule и получает новый сеанс в BeginRequest и закрывает его в EndRequest. С другой стороны, я написал метод в Global.asax, который использует сеанс из этого HttpModule с именем GetData. Я запускаю этот метод (GetData)в методе init Global.асакс. Проблема в том, что когда я использую свой HttpModule в интегрированном режиме, кажется, что мой HttpModule не инициализируется перед запуском Init метод глобальный.асакс.
Я искал порядок запуска этих методов и жизненный цикл событий, но ничего полезного не нашел!
2 ответа:
ASP.NET не предоставляет никаких гарантий, когда методы HttpModule Init() вызываются относительно друг друга (в отличие от статических инициализаторов). В общем, методы Init () должны использоваться для подключения обработчиков событий, и любая "реальная работа" должна выполняться в обработчиках событий.
Все зарегистрированные обработчики событий для конкретного события вызываются из всех HttpModules, включая Global.asax, прежде чем перейти к следующему событию-таким образом, у вас есть контроль над порядком.