Application_End未运行

时间:2014-09-05 15:04:05

标签: c# asp.net

我是C#的新手,所以请耐心等待。

我有一个在Global.asax.cs文件中的Application_Start函数中运行的函数,这在我开始调试时工作正常。

但是当我停止调试时,我在Application_End函数中的函数似乎没有启动。我想知道这是否与调试有关,或者只是我的代码中的错误。

3 个答案:

答案 0 :(得分:2)

我猜应用程序永远不会结束。在调试(使用Cassandra或IIS Express)或在IIS上运行安装时,应用程序在调试会话结束时不会结束。

在IIS上,它在工作进程停止时结束。这会在一段时间后自动发生,具体取决于您的应用程序池设置。

在Cassandra和IIS Express中,当进程正常正常时,将会发生这种情况。我想知道他们是否经常在这些装置上被召唤。

答案 1 :(得分:2)

在Application_End中放入大量需要依赖触发的代码通常不是一个好主意。考虑到ApplicationInstance将启动到将为您的应用程序提供服务的工作进程的每个线程,您将遇到在繁忙的站点上频繁调用Application_End时会出现流量消耗和流量的情况。

当对象从Cache到期时,您可能会发现使用具有滑动过期和回调函数的Cache对象更容易,以确保在需要时正确调用清理代码。

http://msdn.microsoft.com/en-us/library/05kd8d77(v=vs.110).aspx

答案 2 :(得分:2)

我有一个类似的问题,其中Application_End未被调用,因为当要求停止应用程序时有线程正在运行,并且因为只有在一切都停止正常后调用此方法。

然后,我发现Application_Disposed。来自http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/5771721/

  

Application_Disposed:在销毁应用程序之前触发。这是清理以前使用的资源的理想位置。