为什么HttpApplication构造函数被多次调用

And*_*ndy 21 asp.net httpapplication

有人可以解释为什么在应用程序启动时会多次调用派生自HttpApplication的自定义类的构造函数吗?

我的代码结构如下:
- global.asax中的My Global类派生自CustomApp类.
- CustomApp类派生自HttpApplication

全球类是在启动时创建的,但是当我把一个断点在构造函数,调用它几次!我以为应该只创建一个Application类的实例?

我错了吗?

UPD:Web服务器确实可以创建多个HttpApplication实例来处理同时进入的多个请求.当您在HttpApplication后代的构造函数中放置断点时,这一点尤其明显.客户端将要处理几个请求(http内容,CSS文件等),并为每个请求服务,Web服务器将创建HttpApp的新实例.所以,在编写应用程序初始化逻辑时要注意这一点.

mck*_*mey 15

我相信ASP.NET运行时可以为每个应用程序域创建多个HttpApplication.因此,HttpApplication.Init和Ctor可能不止一次被调用.

如果您想要只运行一次的初始化代码,则应使用Application_Start事件,该事件仅在每个应用程序中调用一次.


小智 7

请看一下ASP.NET中post.asax帖子- 它解释了为什么有多个HttpApplication实例.基本上有两个池:特殊和正常.普通池包含请求使用的HttpApplication实例(每个请求都有自己的HttpApplication实例).特殊池包含用于应用程序级事件的HttpApplication对象(如Application_Start,Application_Error).