[英]How to handle Application_End event from outside global.asax
我們可以從名為 Application_End() 的 global.asax 文件創建方法附加到此事件。 但我需要像這樣附加它
HttpContext.ApplicationInstance.ApplicationEnd+=OnApplicationEnd;
有什么辦法嗎?
就這樣解決了問題。
public class MyHttpApplication:HttpApplication
{
public event Action ApplicationEnd;
protected void Application_End()
{
if (ApplicationEnd != null)
ApplicationEnd();
}
}
在 global.asax 中定義
<%@ Application Inherits="MyLib.MyHttpApplication" Language="C#" %>
然后在代碼中
var app = HttpContext.ApplicationInstance as MyHttpApplication;
app.ApplicationEnd += () => { // do something };
Application_End 是一個特殊的“事件”,由 Asp.net 調用,它不屬於 HttpApplication class。
來自 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()
{
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.