Iis
IIS 處理程序映射
給定多個處理程序映射被配置為處理請求,在 IIS 中,確定使用哪個處理程序來提供響應的算法是什麼?
我假設您在詢問 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 框架版本 [managedRuntimeVersion] = v2.0 啟用 32 位應用程序 [enable32BitAppOnWin64] = True 託管管道模式 [managedPipelineMode] = 經典
如果
Default.aspx
被請求,則選擇處理此請求的處理程序將是:
PageHandlerFactory-ISAPI-2.0
有一篇很棒的文章
preConditions
在這裡更詳細地解釋了:我忘了說處理程序映射的順序也是一個考慮因素,特別是對於萬用字元和無擴展映射。通過打開站點的處理程序映射功能,然後點擊右側操作窗格中的查看有序列錶鍊接,可以在 IIS 管理器中查看/更改這些順序。在此視圖中,您可以更改處理程序的處理順序。