当HttpModule Init方法在ASP中运行时.. NET集成模式

本文关键字:运行时 NET 集成 模式 ASP HttpModule Init 方法 | 更新日期: 2023-09-27 18:18:10

我写了一个HttpModule,它是一个NHibernate会话提供程序。它只是在HttpModule的Init方法中打开一个SessionFactory,并在BeginRequest中获得一个新的会话,并在EndRequest中关闭它。另一方面,我在Global中编写了一个方法。使用来自这个HttpModule的名为GetData的会话。我在Global.asax的Init方法中运行该方法(GetData)。问题是当我在集成模式下使用我的HttpModule时,似乎我的HttpModule在运行Global.asax的Init方法之前没有初始化。

我已经搜索了运行这些方法和事件生命周期的顺序,但没有找到有用的!

当HttpModule Init方法在ASP中运行时.. NET集成模式

在IIS 7中。x,模块和处理程序应该在web.config文件的system.webServer xml元素中注册。

查看此MSDN文章:

  • http://msdn.microsoft.com/en-us/library/ms227673.aspx

. NET没有提供任何关于HttpModule Init()方法何时被调用的保证(与静态初始化器不同)。一般来说,Init()方法应该用于连接事件处理程序,任何"实际工作"都应该在事件处理程序中完成。

特定事件的所有注册事件处理程序都将从所有httpmodule调用,包括Global。在转到下一个事件之前——这样您就可以控制顺序了。