Обработчик события | Описание |
---|---|
Аррlication_Start | Вызывается только при запуске Web-приложения, поэтому генерируется только один раз за все время выполнения Web-приложения. Является идеальным местом для определения данных уровня приложения, доступных в любой точке Web-приложения |
Application_End | Вызывается при завершении работы приложения, например, вследствие превышения времени ожидания для последнего пользователя или при завершении работы приложения вручную с помощью IIS |
Session_Start | Вызывается при регистрации нового пользователя в приложении. Здесь можно установить параметры, связанные с конкретным пользователем |
Session_End | Вызывается при завершении сеанса пользователя (обычно в результате превышения установленного времени ожидания) |
Application_Error | Глобальный обработчик ошибок, который вызывается тогда, когда Web-приложение генерирует необработанное исключение |
Последний глобальный шанс для обработки исключений
Позвольте указать на роль обработчика событий Application_Error. Напомним, что страница может использовать обработчик события Error для обработки любого исключения, сгенерированного в контексте страницы и оставшегося без обработки. Обработчик Application_Error оказывается последним пунктом возможной обработки исключений, которые не были обработаны на уровне страницы. Как и в случае события Error на уровне страницы, вы можете получить доступ к конкретному объекту System.Exception, используя наследуемое свойство Server.
void Application_Error(Object sender, EventArgs e) {
Exception ex = Server.GetLastError;
Response.Write(ex.Message);
Server.ClearError;
}
Обработчик Application Error является "последним шансом" обработки события для вашего Web-приложения, где вы, вместо предъявления сообщения об ошибке пользователю, можете записать соответствующую информацию в журнал регистрации событий Web-сервера, например:
‹%@ Import Namespace = "System.Diagnostics"%›
…
void Application_Error(Object sender, EventArgs e) {
// Запись последнего события в журнал событий.
Exception ex = Server.GetLastError;
EventLog ev = new EventLog("Application");
ev.WriteEntry(ex.Message, EventLogEntryType.Error);
Server.ClearError;
Response.Write("Это приложение "зависло". Извините!");
}
Базовый класс HttpApplication
Как уже говорилось, сценарий Global.asax динамически преобразуется в класс, который получается из базового класса System.Web.HttpApplication и обеспечивает те же функциональные возможности, что и тип System.Web.UI.Page. Описания соответствующих членов предлагаются в табл. 24.2.
Таблица 24.2. Ключевые члены типа System.Web.HttpApplication
Свойство | Описание |
---|---|
Application | Позволяет взаимодействовать с переменными уровня приложения, используя доступный тип HttpApplicationState |
Request | Позволяет взаимодействовать с входящим HTTP-запросом (с помощью HttpRequest) |
Response | Позволяет взаимодействовать с HTTP-ответом (с помощью HttpResponse) |
Server | Получает внутренний объект сервера для текущего запроса (с помощью HttpServerUtilitу) |
Session | Позволяет взаимодействовать с переменными уровня сеанса, используя доступный тип HttpSessionState |