Основная и общая цель HttpHandler и HttpModule - внедрить логику предварительной обработки до того, как запрос ASP.NET достигнет IIS-сервера.
ASP.NET предоставляет два способа внедрения логики в конвейер запросов;
- Обработчики Http:
Http Handler помогает нам вводить логику предварительной обработки на основе расширения запрошенного имени файла. ASP.NET использует обработчики HTTP для реализации многих своих собственных функций. Например, ASP.NET использует обработчики для обработки файлов .aspx, .asmx и trace.axd.
пример:
RSS-каналы. Чтобы создать RSS-канал для веб-сайта, вы можете создать обработчик, который генерирует XML-формат в формате RSS. Поэтому, когда пользователи отправляют запрос на ваш сайт, который заканчивается на .rss, ASP.NET вызывает ваш обработчик для обработки запроса.
В создании обработчика есть три шага
1. Реализовать интерфейс IHttpHandler.
2. Зарегистрируйте обработчик в файле web.config или machine.config.
3. Сопоставьте расширение файла (* .arshad) с aspnet_isapi.dll в IIS.
Интерфейс IHttpHandler имеет метод ProcessRequest и свойство IsReusable, которое необходимо реализовать.
ProcessRequest: в этом методе вы пишете код, который создает выходные данные для обработчика.
IsResuable: это свойство указывает, можно ли повторно использовать этот обработчик.
Вы можете зарегистрировать обработчик в файле web.config следующим образом
<httpHandlers>
<add verb="*" path="*.arshad" type="namespace.classname, assemblyname" />
</httpHandlers>
Примечание: здесь мы обрабатываем любое имя файла с расширением arshad.
- Http Модули:
HttpModule - это процессор на основе событий, который вводит логику предварительной обработки до того, как запрос достигает IIS-сервера. ASP.NET использует HTTP-модуль для реализации множества собственных функций, таких как аутентификация и авторизация, управление сеансами, кэширование вывода и т. Д.
Движок ASP.NET генерирует множество событий, когда запрос проходит через конвейер запросов.
Некоторые из этих событий: AuthenticateRequest, AuthorizeRequest, BeginRequest, EndRequest.
Используя HttpModule, вы можете написать логику в этих событиях. Эта логика выполняется при возникновении событий и до того, как запрос достигает IIS.
В создании модулей участвуют два этапа:
1. Реализовать интерфейс IHttpModule
2. Зарегистрируйте модуль в файле web.config или machine.config
Пример:
Безопасность: с помощью модуля HTTP вы можете выполнить пользовательскую проверку подлинности или другие проверки безопасности, прежде чем запрос достигнет IIS.