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

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 (завершение сеанса пользователя).

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