Обработчики HTTP и модули HTTP

Каждый запрос в приложении ASP.NET обрабатывается специализированным компонентом, известным как обработчик HTTP. Обработчик HTTP является основой платформы обработки запросов ASP.NET. ASP.NET использует различные обработчики HTTP для обслуживания различных типов файлов. Например, обработчик для Web-страниц создает страницу и объекты элементов управления, запускает ваш код и генерирует окончательный HTML. Обработчик для Web-служб служит для решения более простой задачи — он просто, десериализует сообщение SOAP и вызывает соответствующий код.

Все обработчики HTTP определяются в разделе <httpHandlers> конфигурационного файла. Основной набор обработчиков HTTP определяется в корневом файле web.config. Ниже показан фрагмент этого файла:

<httpHandlers>
  <add verb="*" path="trace.axd" type="System.Web.Handlers.TraceHandler">
  <add verb="*" path="*.config" type="System.Web.HttpForbiddenHandler"/>
  <add verb="*" path=*.cs" type="System.Web.HttpForbiddenHaBdler"/>
  <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>

Внутри раздела <httpHandlers> вы можете разместить элементы <add>, регистрирующие новые обработчики, либо элементы <remove>, чтобы отменить регистрацию существующих обработчиков. В этом примере регистрируются четыре класса. Все запросы на файл trace.axd направляются обработчику TraceHandler, который генерирует HTML-страницу со списком всех последних собранных выходных данных трассировки (об этом говорилось в главе 3). Запросы файлов с расширением .config или .cs обрабатываются обработчиком HttpForbiddenHandler, который всегда генерирует исключение, информирующее пользователя о том, что эти типы файлов никогда не обслуживаются. А файлы с расширением .аsрх обслуживаются обработчиком PageHandlerFactory. В нашем случае обработчик PageHandlerFactory на самом деле не является обработчиком HTTP. Наоборот, это класс фабрики, который создаст соответствующий обработчик HTTP. Этот дополнительный уровень позволяет фабрике создать другой обработчик или конфигурировать обработчик иначе, в зависимости от информации о запросе.

ASP.NET использует также еще один компонент в обработке страницы, называемый модулями HTTP. Модули HTTP принимают участие в обработке запроса, обрабатывая события приложения, подобно файлу global.asax. Данный запрос может проходить через несколько модулей HTTP, но всегда будет заканчиваться одним обработчиком HTTP. На рис. 5.11 показано, как они взаимодействуют между собой.

ASP.NET использует основной набор модулей HTTP для разрешения таких функций платформы, как кэширование, аутентификацию и страницы ошибок. Вы можете добавить или удалить модули HTTP с помощью дескрипторов <add> и <remove> в разделе <httpModules> конфигурационного файла. Ниже представлен фрагмент, показывающий некоторые модули HTTP, определенные в файле machine.config:

предыдущая    следующая страница   оглавление

241

Hosted by uCoz