Назад | Перейти на главную страницу

Сопоставления обработчиков 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 Framework Version [managedRuntimeVersion]     = v2.0
Enable 32-Bit Applications [enable32BitAppOnWin64] = True
Managed Pipeline Mode [managedPipelineMode]        = Classic

Если Default.aspx был запрошен, то обработчик, выбранный для обработки этого запроса, будет:

PageHandlerFactory-ISAPI-2.0

Есть отличная статья, которая объясняет preConditions подробнее здесь:

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

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