События приложений обычно используются для выполнения инициализации приложения, очистки, регистрации использования, профилирования и поиска и устранения неисправностей. Многие приложения ASP.NET вообще не используют файл global.asax. Однако не следует думать, что вашему приложению не понадобятся глобальные события приложения.

Совет. Файл global.аsах не является единственным местом, в котором вы можете реагировать на глобальные события Web-приложений. Вы можете также создать специальные модули, которые будут участвовать в обработке Web-запросов, о чем будет рассказано далее в этой главе в разделе "Расширение конвейера HTTP".

Демонстрация событий приложения

Следующее Web-приложение использует файл global.asax, который реагирует на метод Appllication_Error(). Он перехватывает ошибку и отображает некоторую информацию в предопределенном формате.

<script language="c#" runat="server">
  protected void Application_Error(Object sender, EventArgs e)
  {
    Response.Write("<font face=\"Tahoma\" size=\"2\" color=\"red\">");
    Response.Write("Oops! Looks like an error occurred!!<hr></font>");
    Response.Write("<font face=\"Arial\" size=\"2\">");
    Response.Write(Server.GetLastError().Message.ToString());
    Response.Write("<hr>" + Server.GetLastError().ToString());
    Server.ClearError();
  }
</script>

Чтобы протестировать этот обработчик события приложения, вам нужно создать другую Web-страницу, которая вызовет ошибку. Далее показан пример, в котором генерируется ошибка при попытке деления на ноль во время загрузки страницы:

protected void Page_Load(object sender, EventArgs e)
{
  int i = 0;
  int j = 1;
  int k = j/i;
}

Если вы запросите эту страницу, то увидите результат, показанный на рис. 5.2. Обычно вы не будете использовать метод Appllication_Error() поскольку он не обладает достаточной гибкостью для работы с различными типами ошибок (если только не предусмотреть большой объем условного кода). Лучше конфигурировать страницы специальных ошибок с помощью файла web.config (об этом речь пойдет в следующем разделе).

предыдущая    следующая страница   оглавление

211

Hosted by uCoz