Web应用程序初始化如下:
HttpApplication(在代码global.asax隐藏中定义)的实例.Modules集合中(类型HttpModuleCollection)Init()调用它们的方法(当它们注册请求事件时)据我所知,上面的场景发生在Web应用程序启动/初始化时(因此应用程序启动事件).
Modules在Web应用程序处于活动状态时,它们是在每个请求上重新设置还是在每个连续请求中从属性重用?据我了解IIS和Asp.net,它们在Web应用程序的整个生命周期中被重用.
如果它们被重用,我们可以假设它们的Init()方法实际上是应用程序启动事件的伪事件处理程序吗?问题是我们无法附加到http模块中的应用程序级别事件.但是,如果它们被重用,我们可以将其Init()用作应用程序启动事件,并执行我们所做的任何事情global.asax.
我们可以假设模块的Init()方法仅在应用程序启动事件时调用吗?我们可以使用这个假设来注册global.asax我们无法改变其代码隐藏的应用程序的路由吗?web.config通常是可访问的,我们可以按照我们想要的方式进行更改.
这实际上有用吗?
我们可以检查HttpApplication代码并检查其InitModulesCommon()方法.这个实际调用Init()每个注册的HTTP模块.更有趣的是,这种方法仅用于InitIntegratedModules()和InitModules()方法.哪些都只用于HttpApplication.InitInternal()方法.这是我的假设的基础,但我想知道是否有人滥用IHttpModule.Init()应用程序启动事件.