我从 this 教程实现了这段代码。
我正在缓存一个SPItem,我注意到我遇到了这个问题。我坚持使用SPItem并立即将其带走。
我从缓存中获取的SPItem很好且可用。然而,在几次突然抓住这个项目之后,每一个属性都抛出一个“空引用异常”。
什么会导致属性抛出“空引用异常”。我的意思是这些甚至像字符串属性,我不希望看到这样的例外。
谢谢
答案 0 :(得分:0)
听起来好像不是属性本身正在抛出NullReferenceException
,而是尝试访问你班级的属性。我认为您对SPItem的引用不再有效。无论你使用什么机制来缓存它都是返回null而不是SPItem的实例,因此NullReferenceException
:
SPItem item = Cache.GetObject("MySPItem"); // <-- this is probably returning null
item.Name; // since item is null, trying to access the Name property would throw a NullReferenceException
答案 1 :(得分:0)
这是正常行为。
在absoluteExpiration
参数中指定的那时,缓存项目将从缓存中删除。
如果您指定了slidingExpiration
,则对象将在上次访问后的几分钟内过期并从缓存中删除,如您在Insert或Add方法调用中指定的那样。
哪一个使用的时候?阅读here。 所以调整这些参数的值。
从缓存中检索对象时始终执行空检查,并相应地更新/刷新过时缓存。