httpHandlers 元素(ASP.NET 设置架构)

根据请求中指定的 URL 和 HTTP 谓词将传入的请求映射到相应的处理程序。 可以在配置层次中的任何级别声明此元素。

<httpHandlers>
   <add... />
   <remove... />
   <clear/>
</httpHandlers>

特性和元素

以下几节描述了属性、子元素和父元素。

特性

无。

子元素

子标记

说明

add

可选元素。

指定映射到处理程序的谓词/路径。

clear

可选元素。

移除当前已配置或已继承的所有处理程序映射。

remove

可选元素。

移除映射到处理程序的谓词/路径。 remove 指令必须与前一个 add 指令的谓词/路径组合完全匹配。 该指令不支持通配符。

父元素

元素

说明

configuration

指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中的根元素。

system.web

为 ASP.NET 配置节指定根元素。

备注

<httpHandlers> 设置由应用程序子目录继承。

<add> 指令按由上而下的顺序进行处理。 如果两个或多个 <add> 元素指定相同的谓词/路径组合,则最后一个 <add> 会重写其他所有元素。

注意注意

Microsoft Internet 信息服务 (IIS) 有自己的 ISAPI 映射扩展模型。为使给定应用程序扩展与其处理程序之间的映射生效,该扩展必须在 IIS 中映射为 ASP.NET ISAPI。对于自定义扩展等非标准扩展,则必须相应地配置 IIS。

默认配置

下面的默认 httpHandlers 元素在 .NET Framework 2.0 版的 Machine.config 文件中配置。

<httpHandlers />

下面的默认 httpHandlers 元素在 .NET Framework 1.1 版的 Machine.config 文件中配置。

注意注意

System.Web.HttpForbiddenHandler 是在尝试访问禁止的资源时发出 HTTP 403 错误“禁止: 访问被拒绝”的内部类型。

System.Web.StaticFileHandler 是另一种处理对指定文件的访问的内部类型。万一出现访问问题,它会生成下列错误之一:HTTP 401 错误“未授权”;HTTP 403 错误“禁止: 访问被拒绝”;或 HTTP 404 错误“找不到文件或目录”。

<httpHandlers>
     <add verb="*" path="*.vjsproj" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.java" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.jsl" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler"/>
     <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>
     <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory"/>
     <add verb="*" path="*.asmx" type="System.Web.Services.Protocols.WebServiceHandlerFactory,
System.Web.Services, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
          validate="false"/>
     <add verb="*" path="*.rem" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="false"/>
     <add verb="*" path="*.soap" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="false"/>
     <add verb="*" path="*.asax" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.ascx" type="System.Web.HttpForbiddenHandler"/>
     <add verb="GET,HEAD" path="*.dll.config" type="System.Web.StaticFileHandler"/>
     <add verb="GET,HEAD" path="*.exe.config" type="System.Web.StaticFileHandler"/>
     <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.cs" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.csproj" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.vb" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.webinfo" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.asp" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.licx" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.resx" type="System.Web.HttpForbiddenHandler"/>
     <add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler"/>
     <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler"/>
     <add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler"/>
</httpHandlers>

下面的默认 httpHandlers 元素在 .NET Framework 1.0 版的 Machine.config 文件中配置。

<httpHandlers>
     <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler" />
     <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
     <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" />
     <add verb="*" path="*.asmx" type="System.Web.Services.Protocols.WebServiceHandlerFactory,
System.Web.Services, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
          validate="false"/> 
     <add verb="*" path="*.rem" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="false"/>
     <add verb="*" path="*.soap" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="false"/>
     <add verb="*" path="*.asax" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.ascx" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.cs" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.csproj" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.vb" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.webinfo" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.asp" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.licx" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.resx" type="System.Web.HttpForbiddenHandler" />
     <add verb="*" path="*.resources" type="System.Web.HttpForbiddenHandler" />
     <add verb="GET,HEAD" path="*" type="System.Web.StaticFileHandler" />
     <add verb="*" path="*" type="System.Web.HttpMethodNotAllowedHandler" />
 </httpHandlers>

下面的默认 httpHandlers 元素在 .NET Framework 2.0 的根 Web.config 文件中配置。

<httpHandlers>
     <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" 
          validate="True" />
     <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
     <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
     <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
     <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory, 
System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="False" />
     <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="False" />
     <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          validate="False" />
     <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
     <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
     <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler"  validate="True" />
     <add path="*.dsdgm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ssdgm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.lsad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ssmap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.dsprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.lsaprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
     <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>

示例

下面的示例演示如何执行以下操作:

  • 将文件扩展名为 .New 的文件的所有 HTTP 请求映射到类 MyHandler.New

  • 将文件扩展名为 .MyNewFileExtension 的文件的 HTTP GET 和 HEAD 请求映射到类 MyHandler.MNFEHandler.

两个类都位于 MyHandler.dll 文件中的程序集 MyHandler 中。

<configuration>
   <system.web>
      <httpHandlers>
         <add verb="*" 
              path="*.New" 
              type="MyHandler.New,MyHandler"/>
         <add verb="GET,HEAD" 
              path="*.MyNewFileExtension" 
              type="MyHandler.MNFEHandler,MyHandler.dll"/>
     </httpHandlers>
   </system.web>
</configuration>

元素信息

配置节处理程序

System.Web.Configuration.HttpHandlersSection

配置成员

SystemWebSectionGroup.HttpHandlers

可配置的位置

Machine.config

根级别的 Web.config

应用程序级别的 Web.config

虚拟或物理目录级别的 Web.config

要求

Microsoft Internet 信息服务 (IIS) 版本 5.0、5.1 或 6.0

.NET Framework 版本 1.0、1.1 或 2.0

Microsoft Visual Studio 2003 或 Visual Studio 2005

请参见

任务

如何:锁定 ASP.NET 配置设置

参考

system.web 元素(ASP.NET 设置架构)

<configuration> 元素

httpHandlers 的 add 元素(ASP.NET 设置架构)

httpHandlers 的 clear 元素(ASP.NET 设置架构)

httpHandlers 的 remove 元素(ASP.NET 设置架构)

System.Configuration

System.Web.Configuration

概念

ASP.NET 配置概述

ASP.NET Web 服务器控件和浏览器功能

保证 ASP.NET 配置的安全

ASP.NET 配置方案

其他资源

ASP.NET 配置文件

ASP.NET 配置设置

常规配置设置 (ASP.NET)

ASP.NET 配置 API