我們有有一些網站集的下面2條不同的管理路徑SharePoint Web應用程序(科指南&辦事處)如的SharePoint獲取網站集當前用戶
http://sharepoint.abc/depts/finance
http://sharepoint.abc/depts/isg
http://sharepoint.abc/offices/boston
http://sharepoint.abc/offices/chicago
當用戶登錄時,他們會看到他們擁有讀取權限的網站集列表以下C#代碼是在web部件
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite spSite = new SPSite(SPContext.Current.Site.Url))
{
foreach (SPSite site in spSite.WebApplication.Sites)
{
try
{
var rootWeb = site.RootWeb;
if (rootWeb.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.ViewPages))
{
if (this.ValidSite(rootWeb.Url))
{
string url = GetRelativePath(rootWeb.Url);
allowedSites.Add(new SiteInfo(rootWeb.Title, url));
}
}
}
catch (Exception ex)
{
this.Controls.Add(new LiteralControl("<br/>GetAllowedSites Error: " + ex.Message));
}
}
}
});
它工作正常,但在生產中需要20秒來加載web部件(我們有跨越2條路徑700個站點集合)。
我已經使用緩存來保存其網站列表,但一旦緩存過期,需要20秒才能重新生成自己。
理想情況下,我想要查看用戶可以使用用戶訪問的網站集,而不是遍歷所有網站集以查看用戶是否有權訪問它們。這可以實現嗎?
感謝
eaigs
我們也有一個負載均衡的農場,所以每次用戶放到不同的服務器上時,緩存都需要重新創建。 – ASG