Roc*_*ngh 0 c# asp.net iis web-applications application-pool
我正在阅读以下文章如何正确使用 IHttpModule *
现在让我们想想这个词本身。应用程序池。是的游泳池。这意味着某个 Web 应用程序正在一个池中运行多个 HttpApplication 实例。是多个。否则它不会被称为池。»多少?«你可能会问。只要您知道可能不止一个,这并不重要。我们相信 IIS 可以完成它的工作。它显然做得很好,它使这个事实对我们开发人员完全透明,因此没有多少人完全了解它的内部工作原理。我们依靠其稳健性来提供服务。确实如此。池中的每个 HttpApplication 实例都保留自己的 HTTP 模块列表,用于处理的每个请求。
*
我有一个问题,在什么情况下 Application 对象的多个实例可以为单个应用程序运行。直到现在我才知道每个应用程序存在一个应用程序对象的事实。所以我很想知道每个应用程序可以运行多个实例是真的吗?它是如何决定的?
每个HttpApplication
对象实例对于单个请求都是唯一的。如果您的站点并行处理多个请求,则每个请求都必须有自己的HttpApplication
. 该对象具有每个请求的状态信息,在请求的生命周期内不得更改(包括请求和响应的主体!)
如文章中所述,这些实例是池化的。每一个都将被重用以服务多个后续请求,达到应用程序池上设置的限制,然后将被允许消亡。
请注意,您特别询问 HttpApplication。这与System.Windows.Forms.Application
类不同,后者实际上是一个单例类,每个应用程序只存在一次。