Рейтинг блогов

ASP .NET 2.0: Файл Global.asax

дата добавления: 17 июля 2006 / 22:26, просмотров: 6511, комментариев: 0

Файл Global.asax является необязательным файлом приложений ASP .NET и содержит дополнительный код, отвечающий за обработку событий, происходящих на уровне приложения. Этот файл должен находиться в корневом каталоге Web-приложения. В ASP .NET 1.1 сей файл автоматически создавался Visual Studio при создании нового Web-проекта, в ASP .NET 2.0 Visual Studio Global.asax автоматически не создает, но его можно добавить в проект вручную. Все изменения, внесенные в файл Global.asax отслеживаются средой ASP .NET, и приложение перезагружается.

Во время выполнения программы Global.asax компилируется в динамический класс, который производится из класса HttApplication и это позволяет управлять всем приложением.

 

В файле Global.asax можно, также как и в файлах страниц *.aspx, использовать директивы @ Imports, @ Application и @ Assembly.

 

За счет того, что файл Global.asax происходит от класса HttpApplication, то он наследует его методы и события. Обработчики событий должны соответствовать  стандартной схеме присвоения имен: Application_ИмяСобытия(событие, аргументы).

Собственно, если вы используете среду разработки Visual Studio 2005, то добавив Global.asax в проект (Website => Add New Item), VS автоматиские создает станадртные обработчики событий. Ниже приведен пример Global.asax созданного VS 2005:

 

<%@ Application Language="VB" %>

 

<script runat="server">

 

  Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

    ' Code that runs on application startup

  End Sub

   

  Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)

    ' Code that runs on application shutdown

  End Sub

       

  Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

    ' Code that runs when an unhandled error occurs

  End Sub

 

  Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)

    ' Code that runs when a new session is started

  End Sub

 

  Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)

    ' Code that runs when a session ends.

    ' Note: The Session_End event is raised only when the sessionstate mode

    ' is set to InProc in the Web.config file.

    If session mode is set to StateServer

    ' or SQLServer, the event is not raised.

  End Sub

      

</script>

 

 

Вот собственно и все, и можно смело завершать эту статью, поскольку VS 2005 и так создает вполне понятный файл Global.asax и осталось только добавить код для обработки событий приложения. Но не все так просто. Я несколько часов потратил, на то чтобы заставить Global.asax обработать событие Application_Error, иногда даже создавалось впечатление, что этот файл просто убрали из ASP .NET 2.0, поскольку реакции не было абсолютно ни какой. Я перерыл большое количество справочной информации по этому поводу, но везде было одно и тоже. Не знаю почему, но созданные автоматически VS 2005 события в Glabal.asax не обрабатываются. Хотя нет, они обрабатываются вполне не плохо самой средой VS 2005 в режиме Debug, но на IIS 5.0/6.0 реакции на них нет абсолютно ни какой.

Но не стоит отчаиваться, все оказалось, как всегда просто и в недрах MSDN мне удалось найти код обработки событий, который действительно работает:

 

 

<%@ Application  Language="VB" ClassName="global_asax" %>

 

<script RunAt="server">

 

  Sub Application_OnStart()

    Response.Write("Application_OnStart()")

  End Sub

 

  Sub Application_BeginRequest()

    Response.Write("Application_BeginRequest()")

  End Sub

 

  Sub Application_OnEnd()

    Response.Write("Application_OnEnd()")

  End Sub

 

  Sub Application_Error()

    Response.Write("Application_Error()")

  End Sub

 

</script>

 

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

Удачи!

Комментарии (всего: 0)

Добавить комментарий rss

В этой записи пока еще нет комментариев...

Добавить комментарий

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учётная запись на этом сайте, пройдите процудуру авторизации.
В противном случае, зарегистрируйтесь на сайте.