Application对象的生存期

HttpContext.Current.Application来保存变量时,发现一段时间没有活动连接时,会和Session变量一样被自动回收,清空了,不知道修改什么地方可以实现生存周期的控制?

原来IIS6.0应用程序池的性能设置里可以设置回收空闲进程的时间,默认好象只有30分钟,怪不得.无论是static还是application都依赖进程,难怪都被回收了.

--------------------------

首先,如果是IIS6,那么涉及到worker process recycle的问题。一旦worker process被recycle了,也就是说启了一个新的w3wp.exe进程来处理新的request,那么application对象自然也就没了,新的进程会维护一个新的application对象。
关于recycle,可以参考:
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/24e3c22e-79a9-4f07-a407-dbd0e7f35432.mspx
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/989a6b5c-289c-4a7c-95b5-175ee4c27159.mspx
如果是IIS5,或者IIS6运行在IIS5模式之下,亦或者是IIS6就算没有发生recycle,如果global.asa(对于ASP应用来讲)被改变了,比如你手动修改了里面的内容,或者对这个文件作了病毒扫描,那么会引起AppDomain的recycle,application会被重起,里面的内容自然也就丢失了。
这里也有篇文章你可以大概参考一下:http://support.microsoft.com/default.aspx?scid=kb;EN-US;248013
如果是ASP.NET应用的话,发生AppDomain recycle的情况更多了,比如global.asax、bin目录的改变等

--------------------------------

http://www.cqzol.com/programming/575411.html

原文地址:https://www.cnblogs.com/emanlee/p/1657859.html