Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_CSharp_5.docx
Скачиваний:
41
Добавлен:
11.05.2015
Размер:
473 Кб
Скачать
☆

5.20. Веб-приложение и файл global.Asax

Каждое веб-приложение описывается объектом класса HttpApplication, или класса-наследника HttpApplication. Свойства данного класса описаны в табл. 34.

Таблица 34

Свойства класса HttpApplication

Имя свойства

Описание

Application

Объект класса HttpApplicationState, описывающий состояние веб-приложения

Context

Объект класса HttpContex, описывающий контекст запроса

Modules

Коллекция модулей– специальных обработчиков, дополняющих функции работы с запросом пользователя

Request

Ссылка на объект HttpRequest, обеспечивающий доступ к информации о HTTP-запросе

Response

Ссылка на объект HttpResponse, обеспечивающий доступ к информации о HTTP-ответе

Server

Объект класса HttpServerUtility, описывающий параметры веб-сервера

Session

Ссылка на объект класса HttpSessionState, хранящий данные текущей сессии пользователя в веб-приложении

User

Ссылка на объект, реализующий интерфейс IPrincipalи описывающий пользователя. Используется при аутентификации

Для разработчика важной является возможность перехватывать события приложения. В табл. 35 перечислены некоторые события приложения, предоставляемые классом HttpApplication. Большинство из них генерируются при обработке приложением каждого запроса.

Таблица 35

Некоторые события веб-приложения

Событие

Причина срабатывания

№

BeginRequest

Получение нового запроса

1

AuthenticateRequest

Завершение аутентификации пользователя

2

AuthorizeRequest

Завершение авторизации пользователя

3

ResolveRequestCache

Генерируется после авторизации, но перед запуском обработчика. Используется модулями кэширования для отмены выполнения обработчиков запроса, если в кэше есть нужная запись

4

AcquireRequestState

Загрузка состояния сеанса

5

PreRequestHandlerExecute

Перед передачей запроса обработчику

6

PostRequestHandlerExecute

Завершение обработчика запроса

7

ReleaseRequestState

После завершения всех обработчиков запроса. Используется модулями состояний для сохранения значений состояния

8

UpdateRequestCache

После завершения обработчика. Используется модулями кэширования для сохранения ответа в кэше

9

EndRequest

После обработки запроса

10

Disposed

Перед закрытием приложения

–

Error

При наступлении необработанной исключительной ситуации

–

PreSendRequestContent

Перед передачей клиенту содержимого ответа

–

PreSendRequestHeaders

Перед передачей клиенту заголовков HTTP

–

Для реализации перехватчика события можно создать пользовательский HTTP-модуль. Но простейшим вариантом является использование файла global.asax. Этот файл играет роль пункта реализации глобальных событий, объектов и переменных.

Файл global.asax поддерживает три директивы: @Application, @Import, @Assembly. Директива @Application позволяет определить базовый класс, на основе которого создается класс приложения (атрибут Inherits), указать язык программирования для серверного кода обработчиков событий (атрибут Language), а также задать описание приложения (атрибут Description).

Приведем пример файла global.asax, содержащего обработчики событий BeginRequest и EndRequest (заметим, что при использовании Visual Studio файл global.asax будет сопровождаться файлом Code Behind).

<%@ Application Language="C#" %>

<script runat="server">

void Application_BeginRequest(object sender, EventArgs e)

{

Response.Write("Request starts!" + "<br />");

}

void Application_EndRequest(object sender, EventArgs e)

{

Response.Write("Request ends!" + "<br />");

}

</script>

Некоторые события можно обработать, используя только обработчики, размещенные в файле global.asax. Это события Application_Start (запуск приложения), Application_End (завершение приложения), Session_Start (начало сеанса пользователя), Session_End (завершение сеанса пользователя).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]