我有一个Web应用程序,它有一些与之关联的状态,可能不会丢失。所以我想我会使用Application_Start
和Application_End
事件来重新水化并将该状态存储到数据库中。但我在Azure中测试,Application_End
从未被调用。
这是我的测试代码global.asax:
public class Application : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine("APPLICATION STARTED.");
}
void Application_End(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine("APPLICATION ENDED.");
}
protected void Application_Start()
{
}
}
" APPLICATION_END"永远不会在应用程序日志中显示。
答案 0 :(得分:4)
你可以尝试使用:
class Foo : System.Web.Hosting.IRegisteredObject
{
public void Stop(bool immediate) {...}
}
(一次,在启动期间):
var obj = new Foo();
System.Web.Hosting.HostingEnvironment.RegisterObject(obj);
关闭时,Stop
方法应(或至少:可能)。您可能希望在immediate
为false
时序列化状态。