2016-03-10 37 views
0

我有一个事件接收器,在一个“添加”事件上发生了lsitenes。内部的接收器我必须检索另一个列表中的所有内容:在SharePoint中缓存数据添加EvenReceiver

var refList=Web.Lists.TryGetList("ReferenceData"); 
var allItems=refList.GetItems(); 
foreach(var item in allItems) { 
// stuff here 
} 

如果我这样做对ItemAdded - 活动每次我不得不从参考列表检索所有数据。由于参考列表中的数据不会经常更改,因此我宁愿缓存内容并且每天只刷新一次。通常我会尝试HttpContext.Cache,但我似乎没有httpContext在一个增加的接收器。

这样做的最好方法是什么?

回答

0

您是否尝试过使用System.Web.Caching并缓存返回的整个对象?您还可以设置缓存的绝对过期时间,以便从当前日期时间起过期24小时。
您应该关注对象缓存的最佳实践,请参阅here

+0

Thx。但这正是这里的问题。 System.Web.Caching不能直接使用。我需要一个HttpContext“somehwere”,但没有任何在这个事件接收器 –

+0

我认为这篇文章可以帮助你实现这一点:http://stackoverflow.com/questions/1601352/how-to-obtain-the-httpcontext -in事件处理程序 –