来自http://msdn.microsoft.com/en-us/library/4wt3wttw.aspx的报价
-- HttpApplication类的一个实例,用于在其生存期内处理许多请求。但是,它一次只能处理一个请求。因此,成员变量可以用于存储每个请求数据的。
为什么每次请求?也许是每一组请求?似乎成员变量可以用于在HttpApplication的整个生命周期中存储数据。因此,第二个请求开始时的HttpApplication状态(对于这个HttpApplication)等于第一个请求结束时的状态(对于这个HttpApplication)。
为什么每次请求?
发布于 2010-09-10 18:53:22
它说明HttpApplication对象的成员可以用来存储每个请求的数据。这并不意味着成员仅限于每个请求的数据。HttpApplication.Application成员持有整个应用程序的全局成员,但在处理请求期间,特定的HttpApplication实例只能使用当前正在处理的请求中的信息修改保存在ApplicationState对象中的全局信息。如果HttpApplication对象可以同时访问多个请求,那么可以想象它能够修改具有聚合的全局数据,或者从任何请求中选择数据。正如@Sidharth所提到的那样,这将产生并发问题,而且允许处理多个请求也是一场噩梦,因为需要保证来自同一个用户的请求(出于安全/内存原因),这是无法保证的,因为IIS在发出新请求时会排队等待下一个可用的HttpApplication对象。它将导致单个实例,可能会处理大量负载(从而导致瓶颈)。
发布于 2010-09-10 18:45:26
每当涉及到IIS时,都会向其中一个HttpApplication实例发出请求(从应用程序中选择)。网络应用程序池)。此HttpApplication的事件(在global.asax中定义)将可用于请求。
据我所知,如果多个请求可以同时访问HttpApplication,则会造成不一致性。Asp.Net本身是一个非常复杂的体系结构,并发性将使它成为一个真正的噩梦。
每个请求的数据都有点扭曲,或者我可能还没有理解正确的概念,但我认为这应该意味着HttpApplication在某个时候只处理一个请求,而不是它可以通过一个请求保存应用程序对象中的变量/值。因为应用程序对象中的任何数据都不是每个请求,而是对所有请求都可用。
让我知道这是不是你要找的:P
这里是最佳链接来理解Asp.Net (http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp)
检查HttpApplication部分以更好地理解这一点。
https://stackoverflow.com/questions/3686614
复制相似问题