Опубликован: 30.01.2013 | Уровень: для всех | Доступ: платный
Самостоятельная работа 8:

Возможности расширения приложений ASP.NET (практика)

< Лекция 7 || Самостоятельная работа 8 || Лекция 8 >
Аннотация: Цель работы: получение базовых навыков по расширению приложений ASP.NET.
Ключевые слова: веб-сервер, HTTP, ASP, net

Исходные условия

Подготовленный веб-сервер согласно лабораторной работе №1.

Задание 1. Создание HTTP-модулей ASP.NET

Создание собственного HTTP-модуля.

  1. Создайте новое приложение ASP.NET.
  2. Модуль HTTP в ASP.NET представляет собой класс, реализующий интерфейс IHttpModule.
  3. Для того, чтобы создать модуль, добавьте в проект новый класс и реализуйте интерефейс IHttpModule.

  4. HTTP-модуль создается при создании домена приложения. Поэтому в момент исполнения метода Init следует подписаться на события, которые должен обрабатывать HTTP-модуль. Для получения доступа к нужным событиям следует использовать класс приложения, передаваемый в параметрах метода. Метод Dispose используется для освобождения ресурсов модуля и данном случае не нужен (поэтому его тело остается пустым). Давайте создадим модуль, обрабатывающий события BeginRequest.

  5. В обработчике каждого события следует воспользоваться текущим контекстом, который можно получить используя статическое свойство Current объекта HttpContext. Например, при обработке каждого запроса можно записывать данные в выходной поток.

  6. Для того чтобы созданный HTTP-модуль мог работать его следует указать в конфигурационном файле. Для этого нужно добавить соответствующее описание в секции HTTP-модулей. Если используется IIS 6, то HTTP-модуль следует добавить в секцию "system.web/ httpModules"; если используется IIS7 или более старшие версии, то определение HTTP-модуля следует поместить в секцию "system.webServer/ modules".

  7. После настройки модуля и запуска приложения при каждом запросе к страницам этого приложения будет обрабатываться событие BeginRequest.

Задание 2. Создание HTTP-обработчиков ASP.NET

Создание собственного обработчика HTTP.

  1. Создайте новое приложение ASP.NET.
  2. Обработчик HTTP в ASP.NET представляет собой класс, реализующий интерфейс IHttpHandler.
  3. Для того, чтобы добавить новый HTTP-обработчик в проект создайте новый класс и реализуйте в нем интерфейс IHttpHandler.

  4. Значение свойства IsReusable должно возвращать true в тех случаях, когда вы хотите чтобы среда исполнения ASP.NET могла использовать один и тот же экземпляр класса для обработки нескольких запросов (в противном случае на каждый запрос будет создан новый объект).
  5. Метод ProcessRequest содержит всю логику HTTP-обработчика. Для работы с текущим контекстом используется параметр, передаваемый в метод. Используя его можно выводить результат в выходной поток.

  6. Для того, чтобы HTTP-обработчик мог обрабатывать запросы следует определить его в конфигурационном файле. Если приложение работает в рамках IIS6, то для определения HTTP-обработчика производится в секции "system.web/ httpHandlers"; если приложение работает в рамках IIS7 или более старшей версии, то используется секция "system.webServer/ handlers". При описании следует указать типы HTTP-методов, которые могут использоваться, а также шаблон адресов, которые будут обрабатываться.

  7. После настройки HTTP-обработчика запросы, которые соответствуют адресу модуля будут обрабатываться этим модулем.

Задание 3. Создание фильтров для приложений ASP.NET MVC Framework

Создание собственных фильтров для ASP.NET MVC Framework на базе объектов ActionFilter.

  1. Создайте новое приложение ASP.NET MVC Framework.
  2. Фильтр ASP.NET MVC Framework - это класс-наследник класса ActionFilterAttribute. Поэтому следует добавить в проект новый класс и унаследовать его от этого класса.

  3. Фильтры ASP.NET MVC Framework позволяют добавить свою логику до и после исполнения метода контроллера или представления. Для того, чтобы задать логику до выполнения метода контроллера следует переопределить метод OnActionExecuting. Этот метод принимает единственный параметр типа ActionExecutingContext, который представляет контекст исполнения для этого фильтра.

  4. Например, при выполнении метода можно вывести значение в выходной поток. Для этого используется текущий контекст, который можно получить из свойства HttpContext параметра filterContext.

  5. Для того, чтобы определить свою логику после исполнения действия контроллера, нужно переопределить метод OnActionExecuted, который принимает единственный параметр ActionExecutedContext, представляющий контекст исполнения для фильтра. Аналогичным образом в этот момент запишем данные в выходной поток.

  6. Поскольку созданный фильтр является атрибутом в C# (является косвенным наследником объекта Attribute), то для того, чтобы применить этот атрибут следует разметить им то действие контроллера, к которому необходимо его применить. В этом случае созданные ранее обработчики будут обрабатываться в момент обращения к действию контроллера. Кроме того, можно разметить этим атрибутом не действие контроллера, а весь контроллер - в этом случае фильтр будет применяться ко всем действиям контроллера одновременно.

  7. После применения фильтра к действиям контроллера он будет применяться при каждом обращении к этому действию.
< Лекция 7 || Самостоятельная работа 8 || Лекция 8 >
Марина Воробьева
Марина Воробьева
Виктория Ткаченко
Виктория Ткаченко

Проигрыватель не работает. После нажатия кнопки Play ничего не происходит.

Азиз Рахимов
Азиз Рахимов
Россия, М/О Ленинская район г.Видное ул.Центральная д.32
Борис Логунов
Борис Логунов
Россия, Moscow