IIS处理程序映射

鉴于多个处理程序映射被configuration为处理请求,在IIS中,确定哪个用于服务响应的algorithm是什么?

我假设你正在问关于IIS7处理程序映射。

在IISpipe理器中隐藏的视图中,每个处理程序映射都有一个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请求通过IISpipe道传递时,只会使用与preCondition匹配的处理程序。

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

所以,如果我有一个运行在应用程序池中的网站configuration为:

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

如果Default.aspx被请求,那么select处理这个请求的处理程序将是:

PageHandlerFactory-ISAPI-2.0

有一篇很好的文章在这里更详细地解释了preConditions

ACHTUNG! IIS7先决条件

我忘记说处理程序映射的顺序也是一个考虑因素,特别是对于通配符和无扩展映射。 可以在IISpipe理器中查看/更改这些顺序,方法是打开站点的“处理程序映射”function,然后单击右侧“操作”窗格中的“查看顺序列表”链接。 在这个视图中,你可以改变处理程序的处理顺序。