如何:在 IIS 中配置 HTTP 处理程序扩展名
更新:2007 年 11 月
默认情况下,Internet 信息服务 (IIS) 在提供服务时只将针对某些文件类型的请求传递给 ASP.NET。具有 .aspx、.asmx 和 .ashx 等文件扩展名的文件已经映射到 ASP.NET ISAPI 扩展 (Aspnet_isapi.dll)。这适用于 IIS 6.0、在经典模式下运行的 IIS 7.0 以及在集成模式下运行的 IIS 7.0 中的托管处理程序。
若要使 IIS 将其他文件扩展名传递到 ASP.NET,必须在 IIS 中注册这些扩展名。有关处理程序如何参与应用程序生命周期的更多信息,请参见 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述或 IIS 7.0 的 ASP.NET 应用程序生命周期概述。
在 IIS 6.0 中映射文件扩展名
打开 IIS 管理器。
展开 Web 服务器计算机的节点,展开**“网站”,然后展开“默认网站”**。
右击应用程序的名称,然后单击**“属性”**。
说明: 有关如何创建 ASP.NET 应用程序的信息,请参见如何:在 IIS 6.0 中创建和配置本地 ASP.NET 网站。
单击**“虚拟目录”选项卡,然后单击“配置”**。
在**“映射”选项卡上,单击“添加”**。
将显示**“添加/编辑应用程序扩展名映射”**对话框。
在**“可执行文件”**框中,键入或浏览至 Aspnet_isapi.dll 文件。默认情况下,该文件位于下面的位置:
%windows%\Microsoft.NET\Framework\version\
说明: 可以从其他映射(如 .aspx 文件的映射)获得完整路径和文件名。
在**“扩展名”**框中键入文件扩展名,例如“.sample”。
说明: 确保包含句点 (.) 作为文件扩展名的一部分。
根据文件扩展名在应用程序中表示的内容,选中**“确认文件是否存在”**复选框。请选择下列选项:
True。文件扩展名表示应用程序中的物理文件。在这种情况下,如果磁盘上不存在请求的文件,IIS 将显示错误。
False。文件扩展名不表示物理文件。扩展名由映射到 ASP.NET 中的扩展的类动态处理。
单击**“确定”**,然后关闭 IIS 管理器。
在以经典模式运行的 IIS 7.0 中映射文件扩展名
打开 IIS 管理器。
说明: 在 和 Windows Server 2008 中,如果启用了用户帐户控制 (UAC) 功能,则该功能会提示您继续访问管理器。有关更多信息,请参见 User Account Control Overview(用户帐户控制概述)。
展开 Web 服务器计算机的节点,展开**“站点”,然后展开“默认网站”**。
选择应用程序的节点。
显示**“功能视图”**窗格。
在**“功能视图”中双击“处理程序映射”**。
单击**“操作”窗格中的“添加脚本映射”**。
显示**“添加脚本映射”**对话框。
在**“添加脚本映射”**对话框中,指定下面的内容:
请求路径。要映射的文件名或文件扩展名。
可执行文件。将处理请求的 .exe 或 .dll 文件的路径。对于经典模式,请指定 ASP.NET ISAPI 扩展 (Aspnet_isapi.dll)。
名称。描述性名称。
单击**“确定”关闭“添加脚本映射”**对话框。
说明: 使用 IIS 7.0 中的 IIS 管理器添加自定义处理程序扩展相当于在 ASP.NET 应用程序的 Web.config 文件中注册该处理程序扩展。注册操作会在 system.webServer 组的 handlers 节中添加一个 handler 元素。
打开应用程序的 Web.config 文件。
找到 system.web 节的 httpHandlers 元素,并为文件扩展名添加一个项。
说明: 文件扩展名必须在 httpHandlers 元素和 handlers 元素中都进行注册。
在以集成模式运行的 IIS 7.0 中映射文件扩展名
执行上述过程中的第 1 步至第 3 步。
单击**“操作”窗格中的“添加托管处理程序”**。
显示**“添加托管处理程序”**对话框。
在**“添加托管处理程序”**对话框中,指定下面的内容:
请求路径。要映射的文件名或文件扩展名。
类型。托管处理程序的类型(类)名称。如果处理程序是在 ASP.NET 应用程序的 App_Code 文件夹中定义的,则其类型名将出现在下拉列表中。
名称。描述性名称。
单击**“确定”关闭“添加托管处理程序”**对话框。
说明: 使用 IIS 7.0 中的 IIS 管理器添加自定义处理程序扩展相当于在 Web.config 文件中注册该处理程序扩展。
说明: 对于在以集成模式运行的 IIS 7.0 中提供自定义扩展的处理程序,只需在 handlers 元素中进行注册。如果您还希望在 httpHandlers 元素中保留该注册,请在 system.webServer 节中创建一个 validation 元素(如果该元素不存在),并将其 validateIntegratedModeConfiguration 属性设置为 false。有关更多信息,请参见 如何:禁止显示 IIS 7.0 注册警告