我在从其他网站集中检索列表项时遇到问题。尝试从当前网站集中接收列表项时,我没有问题。例如,http://myintranet.com/Departments/IT有效。但是http://myintranet.com/sites/Departments/IT会返回错误。
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();
}
}
}
});
}
在尝试接收列表项时,我没有使用任何不同的代码。唯一的区别是这次我从另一个网站集中获取列表项。
感谢您的帮助!
答案 0 :(得分:2)
问题是intranetSite.AllWebs
。这只会获取当前网站集下的SPWeb对象。
您无法直接从一个网站集推断出其他网站集。
即使/ sites / projects看起来像来自/的chid网站集,它也不是。 / sites只是一个托管路径。 /和/ sites / projects处于网站集层次结构的同一级别。
您需要做的是:
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();
}
}
});
}