При наличии пула приложений, который работает в интегрированном режиме, пул приложений может обслуживать «запросы управляемых обработчиков» (GET aspx page), а также «запросы неуправляемых обработчиков» (GET jpg файл).
При обработке запроса MHR пул приложений должен учитывать все модули, но для не MHR не следует учитывать модули, помеченные предварительным условием управляемого обработчика.
Имеет ли приложение пул двух разных конвейеров HttpAplication (один для MHR, а другой для не MHR)?
Или он имеет только один конвейер и может решить, какие обработчики событий httpAplication вызываются в зависимости от запроса?
Полагаю, пул приложений решает, будет ли запрос обработан или нет, прежде чем httpApplication запустит BeginRequest. По крайней мере, до AuthenticateRequest. Это верно?
Ответ по ссылке:
Все ресурсы, обслуживаемые IIS, сопоставляются с обработчиком в конфигурации. Если сопоставление конфигурации не существует, запросы на ресурс получат статус HTTP 404. В дополнение к отображению конфигурации, которое происходит до начала конвейера, отображение обработчика может быть изменено во время выполнения запроса ...
Функция Init модулей выполняется только один раз (может быть, при запуске пула приложений) независимо от предварительного условия управляемого обработчика?
Я полагаю, что пул приложений не создает весь конвейер (регистрация событий httpaplication и т. Д.) Для каждого запроса.
Заранее спасибо,
ОБНОВЛЕНИЕ 1: После прочтения ссылки я все еще «вижу» два разных конвейера, используя один пул приложений.
Под разными конвейерами я подразумеваю два разных набора обработчиков событий, зарегистрированных в конвейере IIS:
BEGIN_REQUEST
AUTHENTICATE_REQUEST
AUTHORIZE_REQUEST
RESOLVE_REQUEST_CACHE
MAP_REQUEST_HANDLER
ACQUIRE_REQUEST_STATE
PRE_EXECUTE_REQUEST_HANDLER
EXECUTE_REQUEST_HANDLER
RELEASE_REQUEST_STATE
UPDATE_REQUEST_CACHE
LOG_REQUEST
END_REQUEST
Когда пул приложений в интегрированном режиме запускается, он может просматривать раздел модулей и может выполнять функцию Init каждого модуля (независимо от настройки предварительного условия). Функция Init каждого модуля регистрируется на некоторых этапах конвейера IIS. Но во время выполнения при обработке неуправляемых запросов следует пропустить обработчики событий модулей с управляемым обработчиком предварительных условий. Как это сделать?
UPDATE2:
Насколько я понимаю, пул приложений (процесс Windows) содержит среду выполнения ASP.Net (httpRuntime в System.Web?). Эта среда выполнения содержит пул объектов httpApplication. При запуске пула приложений (или, возможно, до получения первого запроса) создается несколько httpApplications. В это время вызывается метод Init httpModules (в модулях в web.config).
До появления режима интеграции IIS7 я думал, что все объекты httpApplication будут клонами, но поскольку в зависимости от типа запроса обработчика (управляемого или неуправляемого) некоторые httpModules следует учитывать или нет, я делаю вывод, что httpRutime содержит два пула httpApplication или, возможно, данный Объект httpApplication может обрабатывать только запросы управляемого обработчика или неуправляемого запроса hasler, но никогда два ...