Iis

IIS 處理程序映射

  • February 15, 2019

給定多個處理程序映射被配置為處理請求,在 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在這裡更詳細地解釋了:

危險!IIS7 前提條件

我忘了說處理程序映射的順序也是一個考慮因素,特別是對於萬用字元和無擴展映射。通過打開站點的處理程序映射功能,然後點擊右側操作窗格中的查看有序列錶鍊接,可以在 IIS 管理器中查看/更改這些順序。在此視圖中,您可以更改處理程序的處理順序。

引用自:https://serverfault.com/questions/251992