我需要根据登录用户在缓存中存储为菜单动态创建的 xmldatasource。下面的代码为所有用户返回相同的数据,因为我没有提到登录用户。添加缓存时我需要在哪里提及登录名?我还想在从事件接收器添加新站点时重置或删除缓存,因为站点地图必须重新创建。
private static object _lock = new object();
public XmlDocument CacheData()
{
XmlDocument item;
lock (_lock)
{
item = (XmlDocument)Cache["SiteMapCache"];
if (item == null)
{
using (SPSite site = new SPSite(SPContext.Current.Site.Url))
{
SPWebApplication webapp = site.WebApplication;
item = GenerateMenu(webapp);
}
Cache.Add("SiteMapCache",
item, null,
DateTime.Now.AddMinutes(1),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
null);
}
return item;
}
}