有关IHttpModule.Dispose和Application_End的问题

Roc*_*ngh 10 c# asp.net iis iis-7

我刚刚读了这篇文章"什么时候调用IHttpModule.Dispose方法?" 我找到了这个

"Dispose方法在从执行管道中删除模块之前执行任何最终的清理工作."

这意味着它在整个应用程序中.

没关系.无论如何我自己尝试,我发现使用IHttpModule Dispose方法和Application.Disposed事件的事件处理程序应该几乎不一样.第一个发生在第二个之后.

我觉得这不是100%正确,即IHttpModule.Dispose并不总是遵循Application_End.假设我为我的应用程序运行了多个Application对象实例,这意味着Application对象的每个实例都将包含其中的单个模块实例.现在让我们假设应用程序池充满应用程序实例的时间到了,那么会发生什么?不会一个接一个地开始处理应用程序实例,而是在链中应用实例中的模块.现在这个模块的处理并不意味着Application_End将在此之后启动.应用程序仍在运行.我对吗?

Jef*_*eff 10

是.

HttpModules是每个HttpApplication.与其名称建议相反,global.asax中的Application_End方法不会在每个HttpApplicaton生命周期结束时触发.它在当前AppDomain中的所有HttpApplications的生命周期结束时被解雇(当AppDomain被拆除时).Application_Start方法也是如此.