关于IHttpModule的问题.Dispose和Application_End
本文关键字:Application End Dispose IHttpModule 问题 关于 | 更新日期: 2023-09-27 18:02:02
我刚刚读了这篇文章"当IHttpModule。处置方法调用?"我发现了这个
" Dispose方法在移除之前执行最后的清理工作从执行管道中获取模块的。"
这意味着它是应用范围的
没关系。总之,我自己试着发现,使用的事件处理程序应用程序。处置的事件应该几乎相同。第一个发生就在第二个之后。
我不觉得这是100%正确的,即IHttpModule。Dispose并不总是跟在Application_End后面。假设我的应用程序有多个应用程序对象的实例,这意味着每个应用程序对象的实例将在其内部有单独的模块实例。现在让我们假设应用程序池中的应用程序实例已经满了,那么会发生什么?它会不会开始一个接一个地处理应用程序实例,然后在链中处理应用程序实例中的模块?现在这个模块的处理并不意味着Application_End将在那之后触发。应用程序仍在运行。我说的对吗?
可以。
httpmodule是每个HttpApplication。与它的名字所暗示的相反,全局中的Application_End方法。asax不会在每个httpapplication的生命周期结束时被触发。它在当前AppDomain中所有HttpApplications的生命周期结束时被触发(当AppDomain被拆除时)。Application_Start方法也是如此。
每个应用程序只有一个应用程序对象实例。有许多会话对象,每个都在处理请求,或者等待回收。
应用程序池不会充满应用程序对象,因为每个应用程序只有一个。当一个应用程序池容纳超过一个应用程序时,就会有很多应用程序,回收池会杀死它们。应用程序池也有运行状况监控,会在一定数量的请求/内存使用后重新启动进程。在这种情况下,当一个新的应用程序开始处理新的请求时,现有的会话就会消失。当旧应用程序中的所有会话都死亡时,该应用程序将被拆除。