繁体   English   中英

HttpModule Init方法何时以ASP.NET集成模式运行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM