SharePoint CSOM,检索网站集。限于300?

时间:2014-06-25 09:58:22

标签: sharepoint csom

我正在尝试从SharePoint Online域检索网站集列表。

我正在使用C#和客户端对象模型。

以下代码仅返回300个网站集。

var tenant = new Tenant(ctx);
spp = tenant.GetSiteProperties(0, true);
ctx.Load(spp);
ctx.ExecuteQuery();

有关如何使用CSOM检索所有网站集的任何想法吗?

由于

2 个答案:

答案 0 :(得分:4)

我找到了这个问题的答案,

方法的第一个参数GetSiteProperties是从中开始网站集检索的索引。

我尝试了以下命令     spp = tenant.GetSiteProperties(300,true);

从索引300返回网站集。

所以这是我的代码,可以从sharepoint在线获取所有网站集

SPOSitePropertiesEnumerable spp = null;
var tenant = new Tenant(ctx);
int startIndex = 0;

while (spp == null || spp.Count > 0)
{
    spp = tenant.GetSiteProperties(startIndex, true);
    ctx.Load(spp);
    ctx.ExecuteQuery();

    foreach (SiteProperties sp in spp)
    siteCols.Add(new SiteCol(sp.Title, sp.Url));

    startIndex += spp.Count;
}

顺便说一下,网站集目前限制为10000个。

答案 1 :(得分:1)

我猜 NextStartIndex 在提出要求时不存在,现在你可以这样做:

SPOSitePropertiesEnumerable sites;
List<string> allSites = new List<string>();
int startIndex = 0;

do
{
    sites = tenant.GetSiteProperties(startIndex, false);
    ctx.Load(sites);
    ctx.ExecuteQuery();

    allSites.AddRange(sites.Select(s => s.Url));

    startIndex = sites.NextStartIndex;

} while (sites.NextStartIndex > 0);