我目前正在基于ASP.Net的Web应用程序上工作。 在应用程序停止或快要死掉时,我需要做一些治疗。
在HttpApplication
继承的类中,我知道我可以定义一些事件处理程序方法,并非必不可少:
Application_Error
(对象发送者,EventArgs e)Application_End
(对象发送者,EventArgs e)我想知道是否必须将代码放在Application_End
方法和Application_Error
方法上,或者即使出错也会触发Application_End
。
答案 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
[]在应用程序的整个生命周期中被调用一次,然后将其卸载。
我会用第二个。
请注意,由于StackoverflowException
或OutOfMemoryException
或{{1}