3

引自http://msdn.microsoft.com/en-us/library/4wt3wttw.aspx

HttpApplication 类的一个实例用于在其生命周期中处理许多请求。但是,它一次只能处理一个请求。因此,成员变量可用于存储每个请求的数据

为什么要按请求?也许每组请求?似乎成员变量可用于在 HttpApplication 的整个生命周期中存储数据。因此,在第二个(对于此 HttpApplication)请求开始时 HttpApplication 的状态等于在第一个(对于此 HttpApplication)请求结束时的状态。

为什么要按请求?

4

2 回答 2

2

它表明 HttpApplication 对象的成员可用于存储每个请求的数据。这并不意味着成员仅限于每个请求的数据。HttpApplication.Application 成员持有对整个应用程序来说是全局的成员,但在处理请求的过程中,具体的HttpApplication 实例只能用当前正在处理的请求中的信息来修改ApplicationState 对象中保存的全局信息。如果 HttpApplication 对象可以同时访问多个请求,那么可以想象它可以通过聚合修改全局数据或从任何请求中选择数据。正如@Sidharth Panwar 提到的,这会产生并发问题,并且允许处理多个请求也是一场噩梦,因为需要保证它们来自同一个用户(出于安全/内存原因),这是无法保证的,因为 IIS 将下一个可用的 HttpApplication 对象排队提出了新的请求。这将导致单个实例可能处理大部分负载(因此出现瓶颈)。

于 2010-09-10T18:53:22.650 回答
0

每当涉及 IIS 时,都会向 HttpApplication 实例之一(从 web 应用程序的应用程序池中挑选)提供一个请求。此 HttpApplication 的事件(在 global.asax 中定义)将可用于请求。

据我了解,如果多个请求可以同时访问 HttpApplication 会造成不一致。Asp.Net 本身就是一个非常复杂的架构,并发性将使它成为真正的噩梦。

每个请求的数据有点扭曲,或者我可能没有正确理解这个概念,但我认为这应该意味着 HttpApplication 在某个时间点只处理一个请求,而不是它可以保存放入的变量/值一个请求的应用程序对象。因为放在 Application 对象中的任何数据都不是每个请求的,而是对所有请求都可用的。

让我知道这是否是您正在寻找的:P

PS 这是了解 Asp.Net的最佳链接( http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp

检查 HttpApplication 部分以更好地理解这一点。

于 2010-09-10T18:45:26.087 回答