Жизненный цикл приложения ASP.NET - НЕ жизненный цикл страницы
Я пытаюсь отладить проблему, возникающую в веб-приложении asp.net, работающем на IIS 7.5. Я ожидал обнаружить, что когда мы развернули наше приложение, изменив физический путь к новой копии кода, запросы не были выполнены.
У меня сложилось впечатление, что выполнение текущих запросов завершится в старом экземпляре приложения, а новые запросы будут выполнены для нового экземпляра. Если это так, я ожидал, что старый экземпляр будет работать до тех пор, пока не будет достигнут httpRuntime.shutdownTimeout.
Короче говоря, я попытался воспроизвести это локально, но этого не произошло. Независимо от того, как долго я выполняю свой запрос на получение IIS, кажется, что он будет ждать за пределами настройки shutdownTimeout.
Это та часть жизненного цикла, которая меня интересует. Что происходит между изменением физического пути приложения и отключением IIS любых выполняемых в настоящее время запросов?
1 ответ
Существует очень подробное объяснение жизненного цикла приложения ASP.NET на MSDN.
Методы Application_Start и Application_End являются специальными методами, которые не представляют события HttpApplication. ASP.NET вызывает их один раз за время существования домена приложения, а не для каждого экземпляра HttpApplication.
Application_Start
Вызывается, когда запрашивается первый ресурс (например, страница) в приложении ASP.NET. Метод Application_Start вызывается только один раз в течение жизненного цикла приложения. Этот метод можно использовать для выполнения задач запуска, таких как загрузка данных в кэш и инициализация статических значений. Вы должны установить только статические данные при запуске приложения. Не устанавливайте никакие данные экземпляра, поскольку они будут доступны только первому экземпляру создаваемого класса HttpApplication.