如何处理来自global.asax外部的Application_End事件
本文关键字:外部 asax Application 事件 End global 何处理 处理 | 更新日期: 2023-09-27 17:57:44
我们可以从名为Application_End()的global.asax文件创建方法附加到此事件。但我需要像这个一样附在上面
HttpContext.ApplicationInstance.ApplicationEnd+=OnApplicationEnd;
有什么办法吗?
以这种方式解决了问题。
public class MyHttpApplication:HttpApplication
{
public event Action ApplicationEnd;
protected void Application_End()
{
if (ApplicationEnd != null)
ApplicationEnd();
}
}
在全局.asax定义的中
<%@ Application Inherits="MyLib.MyHttpApplication" Language="C#" %>
然后在代码中
var app = HttpContext.ApplicationInstance as MyHttpApplication;
app.ApplicationEnd += () => { // do something };
来自MSDN*Application_Start和Application_End方法是不表示HttpApplication事件的特殊方法。ASP.NET在应用程序域的生存期内调用它们一次,而不是为每个HttpApplication实例调用。*
我认为您可以在AppDomain.DomainUnload事件上附加和处理相同的行为
//your global.asax class contrauctor
public GlobalApplication()
{
AppDomain.CurrentDomain.DomainUnload += ApplicationEnd;
}
private void ApplicationEnd(object sender, EventArgs e)
{
}
我知道答案已经给出了,但也想包括以下内容:
[assembly: PreApplicationStartMethod(typeof(Bootstraper), "Start")]
[assembly: ApplicationShutdownMethod(typeof(Bootstraper), "End")]
public static class Bootstraper
{
public static void End()
{
...
}
public static void Start()
{
...
}
}