Asp.net 2.0 中 Cache 丢失的问题:“值不能为空”或“未将对象引用设置到对象的实例”

我在用 C# 编写 asp.net 2.0 程序,其中涉及到单点登录的问题,我把判断用户是否 online 这个变量

放在了在 global.asax 中声明的 Cache 里,问题也就由此产生:在我的机器上(XP-SP2、VS2005、PD

双核 3.0G CPU、1G内存)运行时没有问题,在同事的一台笔记本上(XP-SP2、VS2005、迅驰1.7G、512M

内存)运行时就有时发生 Cache 丢失的现象,具体表现为 “Cache 值不能为空”或

“NullReferenceException:  未将对象引用设置到对象的实例”,而配置在一台工作组中的服务器

Windows 2003 Server.net framework 2.0 、IIS 6.0 、320M内存)上时则经常发生 Cache 丢失的现

象!

起初认为丢失的现象没有任何规律,反复检查程序设置断点跟踪均未发现异常,经过查阅资料和讨论,发

现丢失的现象是有规律的,可能有的人已经意识到了,对,就是和机器的配置有关,严格的说是和内存的

大小有关!!!

为什么呢?原来,Cache 在内存紧张的时候是会被移除的,每次取的时候应该判断是否为 null,为 null

就必须重新取一次,或加一个 Cache 回调函数,在失效时进行即时加载使数据重新有效。

解决方法很简单:增加内存,或者最好不要使用 Cache 。在我的方案里改为使用 Application 后一切问

题得以解决!

posted on 2007-08-01 21:24  xh3  阅读(1645)  评论(2编辑  收藏  举报

导航