2016-03-10 35 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事件處理程序 –