C# HttpHandler实例和HttpApplication对象-后者是否。。。?

C# HttpHandler实例和HttpApplication对象-后者是否。。。?,c#,asp.net,httphandler,ihttphandler,C#,Asp.net,Httphandler,Ihttphandler,一本书展示了一个示例,其中(在使用IIS7时)配置了以下模块,以便在网站上运行的任何web应用程序(甚至非asp.net应用程序)都可以使用该模块。但是: 如果为非asp.net应用程序调用此模块,那么由于非asp.net应用程序不在CLR上下文中运行(因此asp.net运行时也不会运行),HttpApplication对象仍将如何创建或为什么创建? 假设还为非asp.net应用程序创建了HttpApplication对象,那么为什么Init()事件处理程序中的代码必须检查HttpApplic

一本书展示了一个示例,其中(在使用IIS7时)配置了以下模块,以便在网站上运行的任何web应用程序(甚至非asp.net应用程序)都可以使用该模块。但是:

  • 如果为非asp.net应用程序调用此模块,那么由于非asp.net应用程序不在CLR上下文中运行(因此asp.net运行时也不会运行),HttpApplication对象仍将如何创建或为什么创建?

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

  • 以下是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)
      { ... }
    }
    



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

    关于HttpHander的链接:

    请不要只是提供答案的链接。