在.NET中的应用程序结尾处调用函数

时间:2019-02-21 16:41:42

标签: asp.net

我目前正在基于ASP.Net的Web应用程序上工作。 在应用程序停止或快要死掉时,我需要做一些治疗

HttpApplication继承的类中,我知道我可以定义一些事件处理程序方法,并非必不可少:

  • Application_Error(对象发送者,EventArgs e)
  • Application_End(对象发送者,EventArgs e)

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

2 个答案:

答案 0 :(得分:1)

只需将您的代码放入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)

答案 1 :(得分:1)

来自ASP.NET Application Life Cycle Overview

  

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

同时

  

Application_End []在应用程序的整个生命周期中被调用一次,然后将其卸载。

我会用第二个。

请注意,由于StackoverflowExceptionOutOfMemoryException或{{1}