IIS 处理程序映射

IIS 处理程序映射

假设配置了多个处理程序映射来处理请求,在 IIS 中,确定使用哪一个来提供响应的算法是什么?

答案1

我假设您询问的是 IIS7 处理程序映射。

在 IIS 管理器中,每个处理程序映射都有一个隐藏的preCondition属性。例如,下面是页面可以拥有的applicationHost.config所有不同页面处理程序的摘录.aspx(我删除了一些属性以保持简洁):

<add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" 
     preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" 
     preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" 
     preCondition="integratedMode,runtimeVersionv4.0" />
<add name="PageHandlerFactory-Integrated" path="*.aspx" 
     preCondition="integratedMode" />
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" 
     preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" 
     preCondition="classicMode,runtimeVersionv2.0,bitness64" />

.aspx请求通过 IIS 管道时,仅preCondition使用与之匹配的处理程序。

通常preConditions映射到站点或应用程序运行的应用程序池的配置。

因此,如果我在应用程序池中运行一个站点,配置如下:

.NET Framework 版本 [managedRuntimeVersion] = v2.0
启用 32 位应用程序 [enable32BitAppOnWin64] = True
托管管道模式 [managedPipelineMode] = Classic

如果Default.aspx需要,则选择处理该请求的处理程序将是:

PageHandlerFactory-ISAPI-2.0

这里有一篇很棒的文章,解释preConditions得更详细:

注意! IIS7 先决条件

我忘了说,处理程序映射的顺序也是一个考虑因素,特别是对于通配符和无扩展名映射。可以通过在 IIS 管理器中打开站点的处理程序映射功能,然后单击右侧操作窗格中的查看有序列表链接来查看/更改这些顺序。在此视图中,您可以更改处理程序的处理顺序。

相关内容