Роль файла Global.asax
Роль файла Global.asax
К этому моменту у вас может сложиться впечатление, что приложение ASP.NET представляет собой простой набор файлов *.аsрх и соответствующих Web-элементов управления. И хотя вы можете построить Web-приложение с помощью простого связывания нескольких Web-страниц, вам, скорее всего, хотелось бы иметь возможность взаимодействия с Web-приложением, как с чем-то цельным. Для этого в Web-приложение ASP.NET можно включить необязательный файл Global.asax, выбрав WebSite?Add New Item из меню (рис. 24.2).
Рис. 24.2. Добавление файла Global.asax
В некотором смысле файл Global.asax в ASP.NET аналогичен традиционному файлу *.exe, поскольку представляет поведение Web-узла в среде выполнения. После добавления файла Global.asax в Web-проект вы обнаружите, что этот файл на самом деле представляет собой блок ‹script›, содержащий набор обработчиков событий.
‹%@ Application Language="C#" %›
‹script runat="server"›
void Application_Start(Object sender, EventArgs e) {
// Код, выполняемый при запуске приложения.
}
void Application_End(Object sender, EventArgs e) {
// Код, выполняемый при завершении приложения.
}
void Applicatioт_Error(Object sender, EventArgs e) {
// Код, выполняемый при появлении необработанной ошибки.
}
void Session_Start(Object sender, EventArgs e) {
// Код, выполняемый при открытии нового сеанса.
}
void Session_End(Object sender, EventArgs e) {
// Код, выполняемый при завершении сеанса.
}
‹/script›
Однако первое впечатление может оказаться обманчивым. В среде выполнении программный код этого блока ‹script› преобразуется в тип класса, получающийся из System.Web.HttpApplication. Если вы имеете опыт работы с ASP.NET 1.х, то вы, наверное, вспомните, что там файл с внешним кодом поддержки для Global.asax буквально определял класс, получающийся из HttpApplication.
Как уже было сказано, члены, определённые в Global.asax, содержатся в обработчиках событий, позволяющих взаимодействовать с событиями на уровне приложения (а также сеанса). Описания этих членов предлагаются в табл. 24.1.
Таблица 24.1. Обработчики событий Global.asax
Обработчик события Описание Аррlication_Start() Вызывается только при запуске Web-приложения, поэтому генерируется только один раз за все время выполнения Web-приложения. Является идеальным местом для определения данных уровня приложения, доступных в любой точке Web-приложения Application_End() Вызывается при завершении работы приложения, например, вследствие превышения времени ожидания для последнего пользователя или при завершении работы приложения вручную с помощью IIS Session_Start() Вызывается при регистрации нового пользователя в приложении. Здесь можно установить параметры, связанные с конкретным пользователем Session_End() Вызывается при завершении сеанса пользователя (обычно в результате превышения установленного времени ожидания) Application_Error() Глобальный обработчик ошибок, который вызывается тогда, когда Web-приложение генерирует необработанное исключение