我正在尝试从 SharePoint Online 域中检索网站集列表。
我正在使用 C# 和客户端对象模型。
以下代码仅返回 300 个网站集。
var tenant = new Tenant(ctx);
spp = tenant.GetSiteProperties(0, true);
ctx.Load(spp);
ctx.ExecuteQuery();
关于如何使用 CSOM 检索所有网站集的任何想法?
谢谢
我正在尝试从 SharePoint Online 域中检索网站集列表。
我正在使用 C# 和客户端对象模型。
以下代码仅返回 300 个网站集。
var tenant = new Tenant(ctx);
spp = tenant.GetSiteProperties(0, true);
ctx.Load(spp);
ctx.ExecuteQuery();
关于如何使用 CSOM 检索所有网站集的任何想法?
谢谢
我找到了这个问题的答案,
GetSiteProperties 方法的第一个参数是网站集检索开始的索引。
我尝试了以下命令 spp = tenant.GetSiteProperties(300, true);
它从索引 300 返回网站集。
所以这是我从在线共享点获取所有网站集的代码
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 个。
我猜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);