是的,每一个应用就是一个Application
所以不同的应用不能共享相同的session,当然HttpApplication也是一样的

解决方案 »

  1.   

    是的。 可以这样认为:每一个虚拟目录就是一个应用程序,它维护一个属于自已的 HttpApplication实例。
      

  2.   

    上面几位,请注意"当应用程序接收到 HTTP 请求时,ASP.NET 页框架将分配这些实例中的一个来处理该请求。该特定的 HttpApplication 实例负责管理它所分配到的请求的整个生存期,并且只有在完成该请求后才可以再次使用该实例。"这句话,ASP.NET 将分配每个http请求一个HttpApplication 实例并保持到这个请求结束,如果每个应用只对应一个HttpApplication 实例的话,岂不是一个网站同时只能相应一个浏览者了,从一个HTTP 请求的发出到完全结束是个不短的时间,这段时间是一个浏览者所独占的,如果是这样的话,真是不可接受的.
      

  3.   

    独占应该是没有错的,但是处理http请求并不是完全有application实例来完成的,我认为它只负责很少的一部分处理。
      

  4.   

    to evonne_feng(evonne):
    其实并不是每个web应用程序对应一个HttpApplication 实例的的,应该是每个http请求对应一个HttpApplication 实例,看msdn:在创建了 HttpApplication 类的实例后紧接着调用 HttpApplication.Init 方法。您可以使用该方法创建并配置要跨所有处理事件使用的任何对象,如下面的示例所示:[Visual Basic]
    <script language="VB" runat="server">
          Public Overrides Sub Init()
             'Insert something interesting here.
          End Sub
    </script>
    [C#]
    <script language="C#" runat="server">
          public override void Init() {
             // Insert something interesting here.
          }
    </script>
    Init 方法与 Application_OnStart 事件不同,因为总是对应用程序中的所有 HttpApplication 实例调用该方法。在应用程序的生存期中只调用一次 Application_OnStart,这便是对 HttpApplication 的第一个实例调用。使用 Application_OnStart 只是为了创建或修改所有管线实例共享的状态,例如 ApplicationState 对象的使用。因为局部变量不被多个 HttpApplication 实例共享,所以不要使用它来创建局部变量。紧接着销毁 HttpApplication 类的实例之前调用 HttpApplication.Dispose 方法。您可以使用它来清理任何本地资源。
      

  5.   

    我的理解是:
    在服务器端每个网站应用程序生成一个httpApplication类的实例,这个实例可以相应多个http请求,但在同一时间内只能相应一个http请求。
      

  6.   

    这么理解肯定有问题,一个httpApplication实例只能同时对应一个http请求,要是一个应用程序只能对应一个httpApplication实例的话,只能等一个请求完全结束后才接受下一个请求,网站还会有人来吗