迭代Mysites网站集时访问被拒绝错误?

时间:2011-03-21 15:35:10

标签: sharepoint sharepoint-2007 wss-3.0

我正在为他登录的用户迭代当前的sharepoint网站集,并显示他已阅读的网站名称并为网站提供权限,这很正常。
与此同时,我必须迭代Mysites网站集,其中已阅读并提供权限。当我在Mysites网站集子网站上做foreach(SPWeb jweb in esite.AllWebs)时。它抛出错误“拒绝访问”。

但是当我在浏览器上输入网址时,他可以看到那些网站?我在SPSecurity中添加了代码.RunWithElevatedPrivileges仍然无法访问这些网站。这个_layout文件夹页面和我只在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 个答案:

答案 0 :(得分:1)

根据您的评论,RunWithElevatedPrivileges在http://committees.test.com上以应用程序池的身份运行,但正在尝试访问http://mysitesdev.test.com上的网站集。两个Web应用程序是否使用相同的应用程序池标识?除非http://committees.test.com上的应用程序池标识具有http://mysitesdev.test.com/groups/grp的权限,否则我会发现访问被拒绝错误。

答案 1 :(得分:0)

您正在使用提升的权限为运行之外的每个人运行您的权限,因此它仍然在用户的安全上下文中运行。