鉴于多个处理程序映射被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,然后单击右侧“操作”窗格中的“查看顺序列表”链接。 在这个视图中,你可以改变处理程序的处理顺序。