[英]When HttpModule Init method runs in ASP.NET Integrated mode?
我已经编写了一个NHibernate会话提供程序的HttpModule。 它只是在HttpModule的Init方法中打开一个SessionFactory,并在BeginRequest中获取一个新的Session,然后在EndRequest中关闭它。 另一方面,我在Global.asax中编写了一个方法,该方法使用来自HttpModule的名为GetData的会话。 我在Global.asax的Init方法中运行该方法(GetData)。 问题是当我在集成模式下使用HttpModule时,在运行Global.asax的Init方法之前,我的HttpModule似乎没有初始化。
我搜索了运行这些方法的顺序和事件的生命周期,但没有发现有用的信息!
在IIS 7.x中,模块和处理程序应在web.config
文件的system.webServer
xml元素中注册。
检查此MSDN文章:
当彼此调用HttpModule Init()方法时,ASP.NET不提供任何保证(与静态初始化程序不同)。 通常,应使用Init()方法连接事件处理程序,并且任何“实际工作”都应在事件处理程序中完成。
在继续进行下一个事件之前,将从所有HttpModule(包括Global.asax)中调用特定事件的所有已注册事件处理程序-这样您就可以通过这种方式控制顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.