Ошибка доступа запрещена при переборе семейства сайтов Mysites?

Я перебирал текущее семейство сайтов 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);
              }
            }
          }
        }
      }
    });

2 ответа

Решение

Согласно вашим комментариям, RunWithElevatedPrivileges работает в удостоверении пула приложений на http://committees.test.com, но пытается получить доступ к семейству сайтов на http://mysitesdev.test.com, Оба веб-приложения используют один и тот же идентификатор пула приложений? Если идентификация пула приложений не включена http://committees.test.com имеет разрешения на http://mysitesdev.test.com/groups/grp, Я бы ожидал ошибку Access Denied.

Вы запускаете свои программы для каждого вне цикла с повышенными привилегиями, поэтому он все еще выполняется в контексте безопасности пользователя.

Другие вопросы по тегам