Метод Application_End вызывается ASP.NET один раз для времени жизни домена приложения, а не для каждого экземпляра HttpApplication. Он вызывается один раз за время жизни приложения перед его выгрузкой.

В течение жизненного цикла приложения asp.net приложение вызывает события, которые вы можете обработать, и вызывает определенные методы, которые вы можете переопределить. Для обработки событий или методов приложения вы можете создать файл с именем Global.asax в корневом каталоге вашего приложения.

Если вы создаете файл Global.asax, ASP.NET компилирует его в класс, производный от класса HttpApplication, а затем использует производный класс для представления приложения.

Экземпляр HttpApplication обрабатывает только один запрос за раз. Это упрощает обработку событий приложения, поскольку вам не нужно блокировать нестатические элементы в классе приложения при доступе к ним. Это также позволяет хранить специфичные для запроса данные в нестатических членах класса приложения. Например, вы можете определить свойство в файле Global.asax и присвоить ему значение, специфичное для запроса.

ASP.NET автоматически связывает события приложения с обработчиками в файле Global.asax, используя соглашение об именовании Application_event, такое как Application_BeginRequest. Это похоже на то, как методы страницы ASP.NET автоматически связываются с событиями, такими как событие страницы Page_Load. Для получения дополнительной информации см. Обзор жизненного цикла страницы ASP.NET.

Методы Application_Start и Application_End являются специальными методами, которые не представляют события HttpApplication. ASP.NET вызывает их один раз за время существования домена приложения, а не для каждого экземпляра HttpApplication.

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

http://msdn.microsoft.com/en-us/library/ms178473.aspx