Сопоставления обработчиков IIS
Учитывая, что в IIS настроено несколько сопоставлений обработчиков, каков алгоритм для определения того, какой из них используется для обслуживания ответа?
1 ответ
Я предполагаю, что вы спрашиваете о сопоставлениях обработчиков IIS7.
Скрытый от просмотра в IIS Manager есть 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 [managedRuntimeVersion] = v2.0 Включить 32-разрядные приложения [enable32BitAppOnWin64] = True Управляемый конвейерный режим [managedPipelineMode] = Классический
Если Default.aspx
был запрошен, тогда обработчик, выбранный для обработки этого запроса, будет:
PageHandlerFactory-ISAPI-2.0
Есть отличная статья, которая объясняет preConditions
более подробно здесь:
Я забыл сказать, что порядок сопоставлений обработчиков также имеет значение, особенно для сопоставлений с подстановочными знаками и без расширений. Порядок их можно просмотреть / изменить в диспетчере IIS, открыв функцию сопоставления обработчиков для сайта, а затем щелкнув ссылку "Просмотреть упорядоченный список" на правой панели действий. В этом представлении вы можете изменить порядок обработки обработчиков.