Учитывая, что для обработки запроса настроено несколько сопоставлений обработчиков, в 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 Framework Version [managedRuntimeVersion] = v2.0 Enable 32-Bit Applications [enable32BitAppOnWin64] = True Managed Pipeline Mode [managedPipelineMode] = Classic
Если Default.aspx
был запрошен, то обработчик, выбранный для обработки этого запроса, будет:
PageHandlerFactory-ISAPI-2.0
Есть отличная статья, которая объясняет preConditions
подробнее здесь:
Я забыл сказать, что порядок сопоставлений обработчиков также важен, особенно для сопоставлений с подстановочными знаками и без расширений. Их порядок можно просмотреть / изменить в диспетчере IIS, открыв функцию сопоставления обработчиков для сайта, а затем щелкнув ссылку «Просмотр упорядоченного списка» на правой панели действий. В этом представлении вы можете изменить порядок обработки обработчиков.