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 阅读(1189) 评论(2) 编辑 收藏

评论

#1楼  回复 引用 查看   

收到
这个状况有意思
算不算MS的BUG
难道他暗示咱们一定要多给服务器加内存?至少1G?
2007-08-02 09:54 | 徐少侠      

#2楼  回复 引用   

我也遇到过这个问题,机器内存512M,在程序中刚刚用Cache.Insert方法插入一个键/值对,马上检索这个项时返回Null,好在这种情况不经常发生,但是偶尔发生也会让人莫名其妙,找原因不知是哪块出了问题,后来才意识到可能是这种情况,如果本文原作者有进一步的发现,希望能分享一下,我的E-Maill:12345__qw@163.com
2007-10-06 21:03 | hantangtieji[未注册用户]

导航

搜索

 
 

常用链接

文章档案(1)

积分与排名

  • 积分 - 86082
  • 排名 - 1187