如何:注册 HTTP 处理程序

更新:2007 年 11 月

创建自定义 HTTP 处理程序类后,必须在 Web.config 文件中注册该类。这将允许 ASP.NET 调用 HTTP 处理程序,以便处理对具有指定文件扩展名的资源的请求。

您注册 HTTP 处理程序的方式取决于您应用程序的宿主 Internet 信息服务 (IIS) 的版本。对于 IIS 6.0,您可以使用 Web.config 文件的 httpHandlers 节注册处理程序。对于在传统模式下运行的 IIS 7.0,可以在 httpHandlers 节中注册处理程序,并将该处理程序映射到 Aspnet_isapi.dll 文件。对于在集成模式下运行的 IIS 7.0,可以使用 system.WebServer 节中的 handlers 元素注册处理程序。

注册 HTTP 处理程序 (IIS 6.0)

  1. 编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。

    - 或 -

    将处理程序的源代码放入应用程序的 App_Code 文件夹中。

    有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序

  2. 在应用程序的 Web.config 文件中,创建一个 httpHandlers 节。

    下面的示例演示如何注册对 SampleHandler.new 资源的请求进行响应的 HTTP 处理程序。该处理程序定义为程序集 SampleHandlerAssembly 中的类 SampleHandler。

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
    </configuration>
    

    下面的示例将所有对具有文件扩展名“.SampleFileExtension”的文件的 HTTP 请求映射到 SampleHandler2 类。在本例中,处理程序代码位于 App_Code 文件夹中,因此您无需指定程序集。

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2 " />
        </httpHandlers>
      <system.web>
    </configuration>
    
  3. 配置 IIS 以将对具有自定义文件扩展名的文件请求转发到 ASP.NET。

    有关更多信息,请参见如何:在 IIS 中配置 HTTP 处理程序扩展名

注册 HTTP 处理程序(在传统模式下运行的 IIS 7.0)

  1. 编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。

    - 或 -

    将处理程序的源代码放入应用程序的 App_Code 文件夹中。

    有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序

  2. 在应用程序的 Web.config 文件中,创建一个 httpHandlers 节。

  3. configuration 元素的内部创建一个 system.webServer 节。

  4. 在 system.WebServer 节的内部创建一个 handlers 元素。

    46c5ddfy.alert_note(zh-cn,VS.90).gif说明:

    必须定义 httpHandlers 元素和 handlers 元素。

    下面的示例演示如何注册对 SampleHandler.new 资源的请求进行响应的 HTTP 处理程序。该处理程序定义为程序集 SampleHandlerAssembly 中的类 SampleHandler。

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler" verb="*" path="SampleHandler.new" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    将 FrameworkPath 替换为 Aspnet_isapi.dll 文件的正确路径。

    下面的示例将所有对具有文件扩展名“.SampleFileExtension”的文件的 HTTP 请求映射到 SampleHandler2 类。在本例中,处理程序代码位于 App_Code 文件夹中,因此您无需指定程序集。

    <configuration>
      <system.web>
        <httpHandlers>
          <add verb="*" path="*.SampleFileExtension" 
             type="SampleHandler2" />
        </httpHandlers>
      <system.web>
      <system.webServer>
        <add name=SampleHandler2" verb="*" path="*.SampleFileExtension" 
          Modules="IsapiModule" 
          scriptProcessor="FrameworkPath\aspnet_isapi.dll"
          resourceType="File" />
      </system.webServer>
    </configuration>
    

    将 FrameworkPath 替换为 Aspnet_isapi.dll 文件的正确路径。

    46c5ddfy.alert_note(zh-cn,VS.90).gif说明:

    对于在传统模式下运行的 IIS 7.0,无需像对 IIS 6.0 那样单独使用 IIS 管理器将文件扩展名映射到 Aspnet_isapi.dll 文件。可以在 Web.config 文件中映射扩展名。

注册 HTTP 处理程序(在集成模式下运行的 IIS 7.0)

  1. 编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。

    - 或 -

    将处理程序的源代码放入应用程序的 App_Code 文件夹中。

    有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序

  2. 在应用程序的 Web.config 文件中,在 system.webServer 节中创建一个 handlers 元素。

    46c5ddfy.alert_note(zh-cn,VS.90).gif说明:

    不使用在 httpHandlers 元素中定义的处理程序。如果没有移除 httpHandlers 注册,则必须将 validation 元素的 validateIntegratedModeConfiguration 属性设置为 false,以避免发生错误。validation 元素是 system.webServer 元素的子元素。有关更多信息,请参见 ASP.NET Integration with IIS 7.0(将 ASP.NET 与 IIS 7.0 集成)中的“Disabling the migration error message”(禁用迁移错误消息)。

    下面的示例演示如何注册对 SampleHandler.new 资源的请求进行响应的 HTTP 处理程序。该处理程序定义为程序集 SampleHandlerAssembly 中的类 SampleHandler。

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler" verb="*" 
            path="SampleHandler.new" 
            type="SampleHandler, SampleHandlerAssembly" 
            resourceType="Unspecified" />
        </handlers>
      <system.webServer>
    </configuration>
    
    46c5ddfy.alert_note(zh-cn,VS.90).gif说明:

    resourceType 属性执行与 IIS 6.0 的 IIS 管理器中的“验证文件是否存在”选项相同的功能。

    下面的示例演示如何将对具有文件扩展名“SampleFileExtension”的文件的所有 HTTP 请求映射到 SampleHandler2 HTTP 处理程序类。在本例中,处理程序代码位于 App_Code 文件夹中,因此您无需指定程序集。

    <configuration>
      <system.webServer>
        <handlers>
          <add name="SampleHandler2" verb="*"
            path="*.SampleFileExtension" 
            type="SampleHandler2" />
            resourceType="Unspecified" />
        <handlers>
      <system.webServer>
    </configuration>
    

    对于在集成模式下运行的 IIS 7.0,只需要在 handlers 元素中进行注册。

    有关 IIS web.webServer 配置元素的更多信息,请参见 MSDN 网站上的 system.webServer Section Group (IIS Settings Schema)(system.webServer 节组(IIS 设置架构))。

    有关如何配置具有自定义文件扩展名的处理程序的更多信息,请参见如何:在 IIS 中配置 HTTP 处理程序扩展名

请参见

任务

如何:在 IIS 中配置 HTTP 处理程序扩展名

如何:创建异步 HTTP 处理程序

演练:创建同步 HTTP 处理程序

概念

IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述

IIS 7.0 的 ASP.NET 应用程序生命周期概述