ASP.NET 应用程序生命周期 - 不是页面生命周期 [重复]

Posted

技术标签:

【中文标题】ASP.NET 应用程序生命周期 - 不是页面生命周期 [重复]【英文标题】:ASP.NET Application Life Cycle - NOT page life cycle [duplicate] 【发布时间】:2013-03-18 22:37:05 【问题描述】:

我正在尝试调试在 IIS 7.5 上运行的 asp.net Web 应用程序遇到的问题。我期待发现,当我们通过将物理路径更改为代码的新副本来部署应用程序时,请求并没有完成。

我的印象是,当前执行的请求将在应用程序的旧实例上完成,而新请求将针对新实例执行。如果这是真的,我希望旧实例一直运行到达到 httpRuntime.shutdownTimeout。

长话短说,我试图在本地复制它,但没有发生。无论我的请求需要多长时间,IIS 似乎都会等待超过 shutdownTimeout 中的设置。

这是我感兴趣的生命周期的一部分。在更改应用程序的物理路径和 IIS 停止任何当前正在执行的请求之间会发生什么?

【问题讨论】:

让 Visual Studio 为您部署代码。我不知道你为什么认为 POSTS / GETS (request) 会在实例之间共享。我会在应用程序中寻找任何硬编码的路径,如果 Visual Studio 在路径下放置一个波浪线,则值得研究。如果我理解正确,我认为 app_start,app_end 与您的问题没有任何关系。事实上,你甚至不得不使用这些是非常罕见的。 重复ASP.NET page life cycle explanation 【参考方案1】:

在MSDN 上对 ASP.NET 应用程序生命周期有非常透彻的解释。

Application_Start 和 Application_End 方法是不代表 HttpApplication 事件的特殊方法。 ASP.NET 在应用程序域的生命周期内调用它们一次,而不是为每个 HttpApplication 实例调用一次。

Application_Start

在请求 ASP.NET 应用程序中的第一个资源(例如页面)时调用。 Application_Start 方法在应用程序的生命周期中只调用一次。您可以使用此方法执行启动任务,例如将数据加载到缓存中和初始化静态值。 您应该在应用程序启动期间仅设置静态数据。不要设置任何实例数据,因为它只对创建的 HttpApplication 类的第一个实例可用。

【讨论】:

以上是关于ASP.NET 应用程序生命周期 - 不是页面生命周期 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET应用程序与页面生命周期

ASP.NET页面生命周期包括哪几个阶段

asp.net-页面生命周期

ASP.NET MVC 生命周期 - 每个页面请求做一些工作

asp.net页面的生命周期中有一个判断是不是回传 IsPostBack 属性,请问有啥用?

ASP.NET最常用的页面生命周期事件