我是C#的新手,所以请耐心等待。
我有一个在Global.asax.cs文件中的Application_Start
函数中运行的函数,这在我开始调试时工作正常。
但是当我停止调试时,我在Application_End函数中的函数似乎没有启动。我想知道这是否与调试有关,或者只是我的代码中的错误。
答案 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:在销毁应用程序之前触发。这是清理以前使用的资源的理想位置。