如何:注册 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)
编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。
- 或 -
将处理程序的源代码放入应用程序的 App_Code 文件夹中。
有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序。
在应用程序的 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>
配置 IIS 以将对具有自定义文件扩展名的文件请求转发到 ASP.NET。
有关更多信息,请参见如何:在 IIS 中配置 HTTP 处理程序扩展名。
注册 HTTP 处理程序(在传统模式下运行的 IIS 7.0)
编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。
- 或 -
将处理程序的源代码放入应用程序的 App_Code 文件夹中。
有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序。
在应用程序的 Web.config 文件中,创建一个 httpHandlers 节。
在 configuration 元素的内部创建一个 system.webServer 节。
在 system.WebServer 节的内部创建一个 handlers 元素。
说明: 必须定义 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 文件的正确路径。
说明: 对于在传统模式下运行的 IIS 7.0,无需像对 IIS 6.0 那样单独使用 IIS 管理器将文件扩展名映射到 Aspnet_isapi.dll 文件。可以在 Web.config 文件中映射扩展名。
注册 HTTP 处理程序(在集成模式下运行的 IIS 7.0)
编译 HTTP 处理程序类并将结果程序集复制到应用程序根文件夹下的 Bin 文件夹。
- 或 -
将处理程序的源代码放入应用程序的 App_Code 文件夹中。
有关 HTTP 处理程序的示例,请参见演练:创建同步 HTTP 处理程序。
在应用程序的 Web.config 文件中,在 system.webServer 节中创建一个 handlers 元素。
说明: 不使用在 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>
说明: 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 处理程序扩展名。