是的, 正像 liuyh 所提到的。
静态变量是保存在内存中的一块共享区域的,它的生存时间是与整个应用程序的运行时间相一致的。也就是说只要 应用程序 一直在跑,这个静态变量就一直存在,一旦应用程序被终止了,整块内存被释放,这个静态变量就不存在了。这些在C/S模型中工作都都很好。
但是在Asp.net的程序中,就需要注意到所有的application在IIS6服务器中,并不是一直都运行的。如果程序超过20分钟(默认设置)没有新的http Request请求。IIS6出于节约性能的考量就会终止当前的Application。(Session/Cache/静态变量)就都被清空了。不但如此,如果程序运行时间超过 1740 分钟(默认设置),为了方式某些程序长期运行导致占据大量内存不释放,IIS6自动会对他作一次restart.同样也会导致(Session/Cache/静态变量)清空。还有的可能性的就是程序遇到了重大错误,IIS6自动执行一次重起。
所以建议在Application_End事件中加入日志。然后看看当静态变量被清空的时候。是否有关于Application_End的日志。如果有的话,就说明是程序已经被restart了。
谢谢
WenYuan - 王文渊
在线技术支持工程师
微软全球技术支持中心
---------------------------------------------------------------------------------------
我们的服务时间:周一至周五9:00-18:00(节假日除外)。我们将在两个工作日(48小时)内提供初始回应,并和您一起研究并解决问题。更多微软新闻组技术支持信息,请访问:
http://support.microsoft.com/gp/newsgroupsupport/zh-cn.
回帖时,请在您的新闻组阅读器中使用“回复组(Reply to Group)”,这将帮助其他用户从您的提问中获益
---------------------------------------------------------------------------------------
本贴子以”现状”提供且没有任何担保,同时也没有授予任何权利。