Ошибка доступа запрещена при переборе семейства сайтов Mysites - PullRequest
0 голосов
/ 21 марта 2011

Я выполнял итерацию текущего семейства сайтов 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 ]

1 голос
/ 23 марта 2011

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

0 голосов
/ 21 марта 2011

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

...