2013-01-14 29 views
-1

我们有几个相当大的ASP.NET 2.0应用程序,用C#编写,运行在Windows Web Server 2008上。 我们经常使用Cache,直到最近没有问题。 但是,最近几个月,我们在使用Cache的方法中出现了随机错误。尽管密钥存在,但值[Cache]似乎为空。或者在Cache中有一个集合,并且它的所有元素都突然为空(集合是用constans初始化的,所以这些不是数据库问题)。 这怎么可能?有没有已知的错误?这可能是服务器内存或光盘故障?缓存中的数据消除 - 键保留,但值为空

+0

当内存变得很低(或经过一定时间后)时,缓存的值就会丢失。所以值变成'null':按设计。 –

回答

0

即使您使用Cache.NoAbsoluteExpiration + Cache.NoSlidingExpiration填充缓存,ASP.NET也可以从缓存中删除项目(例如,当内存变低时)。

通过CacheItemPriority.NotRemovableCache.Insert()以防止发生。

+0

不,不,这不是正常Cache工作的问题。问题是我们缓存例如一个ArrayList填充了一些字符串。然后在一段时间之后,我们将ArrayList从Cache中取出,并且ArrayList [i]为空,尽管肯定我们从不在那里放置任何null。 – user34402

+2

@ user34402:然后更好地描述你的问题。也发布相关的代码。 –

+0

在你说'Cache [key]'为空的问题中,现在你说'(ArrayList )Cache [key] [i]'为空。这是不一样的。请发布您的缓存存储/检索代码并澄清您的问题。 – istepaniuk