何时在ASP.NET MVC应用程序生命周期中处置静态资源

时间:2015-07-13 19:20:55

标签: asp.net .net asp.net-mvc asp.net-mvc-4 idisposable

我们有一个IDisposable资源,虽然它是无状态且线程安全的,但实例化的成本相对较高。所以...我们决定使用标准的单例模式进行换行,并对所有请求重复使用单个实例,直到app-pool循环使用。

考虑到这一点,我们仍然希望尽可能以确定的方式调用Dispose()。

问题是......假设我们有机会在关闭的情况下保持优雅,那么处理这些资源的适当位置是什么?例如......

对于上下文,该应用程序是ASP.NET MVC 4。

    protected void Application_Disposed(Object sender, EventArgs e)
    {
        CleanUpResources();
    }

或......

    protected void Application_End(Object sender, EventArgs e)
    {
        CleanUpResources();
    } 

2 个答案:

答案 0 :(得分:1)

资源是托管还是非托管?如果是托管,请使用Application_End,否则请使用Application_Disposed。有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/ms178473.aspx

答案 1 :(得分:1)

我知道挂钩应用程序结束事件的最可靠方式是IRegisteredObject。我不了解Application_End的可靠性。