保存并重新水化.net Web应用程序的状态

时间:2018-03-27 09:02:48

标签: c# .net azure asp.net-web-api

我有一个Web应用程序,它有一些与之关联的状态,可能不会丢失。所以我想我会使用Application_StartApplication_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"永远不会在应用程序日志中显示。

1 个答案:

答案 0 :(得分:4)

你可以尝试使用:

class Foo : System.Web.Hosting.IRegisteredObject
{
    public void Stop(bool immediate) {...}
}

(一次,在启动期间):

var obj = new Foo();
System.Web.Hosting.HostingEnvironment.RegisterObject(obj);

关闭时,Stop方法(或至少:可能)。您可能希望在immediatefalse时序列化状态。