【问题标题】:Quote from MSDN about System.Web.HttpApplication引用 MSDN 关于 System.Web.HttpApplication
【发布时间】:2010-09-10 16:57:45
【问题描述】:

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

HttpApplication 的一个实例 类用于处理许多请求 在它的一生中。然而,它可以 一次只处理一个请求。 因此,成员变量可用于 存储每个请求的数据

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

为什么是每个请求?

【问题讨论】:

    标签: .net asp.net httpapplication


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      让我知道这是否是你要找的:P

      附:这是了解 Asp.Net 的 BEST 链接 (http://www.west-wind.com/presentations/howaspnetworks/howaspnetworks.asp)

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

      【讨论】:

        猜你喜欢
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多