【问题标题】:Call a function at the end of an application in .NET [duplicate]在.NET中的应用程序末尾调用函数[重复]
【发布时间】:2019-02-22 04:50:11
【问题描述】:

我目前正在开发基于 ASP.Net 的 Web 应用程序。 当应用程序停止或死亡时,我需要做一些处理

HttpApplication继承类中,我知道我可以定义一些事件处理方法,值得注意的是:

  • Application_Error(object sender, EventArgs e)
  • Application_End(object sender, EventArgs e)

我想知道我是否必须将我的代码放在 Application_End 方法和 Application_Error 方法上,或者即使出现错误也会触发 Application_End

【问题讨论】:

标签: asp.net


【解决方案1】:

来自ASP.NET Application Life Cycle Overview

Application_Error 可以在应用程序生命周期的任何阶段引发。

同时

Application_End [is] 在应用程序卸载之前在应用程序的每个生命周期调用一次。

我会使用第二个。

请注意,如果应用程序因StackoverflowExceptionOutOfMemoryException 而死亡,则不会调用它

【讨论】:

    【解决方案2】:

    只需将代码放在Application_end 方法中就足够了,因为无论应用程序终止如何都会调用此方法。 (包括错误终止)

    Application_EndRequest 是唯一可以保证的事件 在每个请求中提出,因为请求可以被短路。为了 例如,如果两个模块处理 Application_BeginRequest 事件并且 第一个抛出异常,Application_BeginRequest 事件 不会为第二个模块调用。但是,那 Application_EndRequest 方法总是被调用以允许 清理资源的应用程序。

    你的 try catch 块也应该捕捉到任何会结束应用程序的错误。

    https://docs.microsoft.com/en-us/previous-versions/aspnet/ms178473(v%3dvs.100)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2012-02-27
      • 2011-03-18
      • 2012-03-01
      • 1970-01-01
      相关资源
      最近更新 更多