List 从SharePoint 2010中的其他网站集检索列表项

List 从SharePoint 2010中的其他网站集检索列表项,list,sharepoint-2010,web-parts,List,Sharepoint 2010,Web Parts,我在从其他网站集检索列表项时遇到问题。我在尝试从当前网站集中接收列表项时没有问题。例如,工作。但返回一个错误 if (!String.IsNullOrEmpty(SiteName) && !String.IsNullOrEmpty(SPContext.Current.Web.Url)) { SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite intranet

我在从其他网站集检索列表项时遇到问题。我在尝试从当前网站集中接收列表项时没有问题。例如,工作。但返回一个错误

if (!String.IsNullOrEmpty(SiteName) && !String.IsNullOrEmpty(SPContext.Current.Web.Url))
    {
      SPSecurity.RunWithElevatedPrivileges(delegate()
      {
        using (SPSite intranetSite = new SPSite(SPContext.Current.Web.Url))
        {
          using (SPWeb currentWeb = intranetSite.AllWebs["/sites/projects/Physics"])
          {
            SPList postList = currentWeb.Lists.TryGetList("Issues");                

            if (postList != null)
            {
              IssueList.DataSource = postList.Items.GetDataTable();

              IssueList.DataBind();
            }
          }
        } 

      });
    }
我在尝试接收列表项时,没有使用任何与我通常使用的代码不同的代码。唯一的区别是,这次我从另一个网站集获取列表项


谢谢你的帮助

问题是
intranetSite.AllWebs
。这将仅获取当前网站集下的SPWeb对象

不能直接从一个网站集推断另一个网站集

尽管/sites/projects看起来像来自/的chid网站集,但它;不是/站点只是一个托管路径和/站点/项目位于网站集层次结构的同一级别

您需要做的是:

if (!String.IsNullOrEmpty(SiteName) && !String.IsNullOrEmpty(SPContext.Current.Web.Url))
    {
      SPSecurity.RunWithElevatedPrivileges(delegate()
      {

          using (SPWeb currentWeb = new SPSite("http://server/sites/projects/Physics").OpenWeb())
          {
            SPList postList = currentWeb.Lists.TryGetList("Issues");                

            if (postList != null)
            {
              IssueList.DataSource = postList.Items.GetDataTable();

              IssueList.DataBind();
            }
          }

      });
    }

现在我终于开始了解这个托管路径业务。一整天都在给我惹麻烦。谢谢你的帮助。我明天会尝试实现这个。不用担心-是的,一开始他们很困惑,因为他们搞砸了正常的等级制度。托管路径只是对网站集进行分组的一种“逻辑”方式,但根据对象模型,在Web应用程序眼中,所有网站集都是平等的,无论它位于哪个托管路径下。