HttpHandler实例和HttpApplication对象 - 后者......?

时间:2009-03-31 18:51:25

标签: c# asp.net httphandler ihttphandler

一本书展示了一个示例,其中(当使用IIS7时)配置了以下模块,以便在网站上运行的任何Web应用程序(甚至通过nonasp.net应用程序)使用它。但是:

  1. 如果为nonasp.net应用程序调用此模块,那么仍然会创建HttpApplication对象的方式或原因,因为nonasp.net应用程序不在CLR的上下文中运行(因此也是Asp .Net运行时也不会运行)?

  2. 假设还为nonasp.net应用创建了HttpApplication对象,那么为什么Init()事件处理程序中的代码必须检查HttpApplication对象是否实际存在?它为什么不存在?这个HttpApplication对象实际上不是实例化Http模块实例吗?

  3. 这是Http处理程序:

    public class SimpleSqlLogging : IHttpModule
    {
      private HttpApplication _CurrentApplication;
    
      public void Dispose()
      {
          _CurrentApplication = null;
      }
    
      public void Init(HttpApplication context)
      {
          // Attach to the incoming request event
          _CurrentApplication = context;
    
          if (context != null)
          {
              context.BeginRequest += new EventHandler(context_BeginRequest);
          }
      }
    
      void context_BeginRequest(object sender, EventArgs e)
      { ... }
    }
    



2 个答案:

答案 0 :(得分:3)

在IIS7中,使用集成管道运行的应用程序池中的应用程序始终是.NET应用程序。代码只是防守。

答案 1 :(得分:0)