Я выполнял итерацию текущего семейства сайтов sharepoint для пользователя, в который он вошел, и отображал имена сайтов, которые он прочитал, и предоставлял разрешения на сайты, и это работает нормально.
В то же время я должен перебрать семейство сайтов Mysites, где есть права на чтение и внесение. Когда я делаю foreach (SPWeb jweb в esite.AllWebs) в под сайтах семейства сайтов Mysites. Выдает ошибку «ACCESS DENIED».
Но когда я набрал URL в браузере, он может видеть эти сайты? Я добавил код в SPSecurity.RunWithElevatedPrivileges, который все еще не может получить доступ к этому сайту. Эта страница _layout folder, и я написал код только на странице aspx.
Как решить эту проблему?
SPSite site = SPContext.Current.Web.Site; // http://committees.test.com
SPUser user = SPContext.Current.Web.CurrentUser;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite esite = new SPSite(site.ID))
{
Control cont5 = this.LoadControl("/_CONTROLTEMPLATES/ALERTUC/uc5.ascx");
cont5.ID = "GLOBE";
RadioButtonList glbrbl = (RadioButtonList)cont5.FindControl("RBList5");
try
{
glbrbl.SelectedValue = user.Notes.ToString();
}
catch (Exception) { }
GlobalPnl.Controls.Add(cont5);
foreach (SPWeb jweb in esite.AllWebs)
{
if (!jweb.IsRootWeb)
{
if (jweb.GetSubwebsForCurrentUser().Count != 0)
{
if (jweb.ParentWeb.ID == jweb.Site.RootWeb.ID)
{
getsubweb(jweb, Panel1, user);
}
}
}
}
}//using
using (SPSite esite = new SPSite("http://mysitesdev.test.com/groups/grp"))
{
foreach (SPWeb jweb in esite.AllWebs) //**Access Denied**
{
if (!jweb.IsRootWeb)
{
if (jweb.GetSubwebsForCurrentUser().Count != 0)
{
if (jweb.ParentWeb.ID == jweb.Site.RootWeb.ID)
{
getsubweb(jweb, Panel1, user);
}
}
}
}
}
});