Сопоставления обработчиков 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 более подробно здесь:

Achtung! Предварительные условия IIS7

Я забыл сказать, что порядок сопоставлений обработчиков также имеет значение, особенно для сопоставлений с подстановочными знаками и без расширений. Порядок их можно просмотреть / изменить в диспетчере IIS, открыв функцию сопоставления обработчиков для сайта, а затем щелкнув ссылку "Просмотреть упорядоченный список" на правой панели действий. В этом представлении вы можете изменить порядок обработки обработчиков.

Другие вопросы по тегам