使用客户端对象模型我正在寻找最有效的方法来搜索 SharePoint 服务器并确定特定子网站是否存在给定其唯一 ID (GUID)。我们将 GUID 存储在我们的外部系统中,因为我们需要返回站点,并且 GUID 是唯一不能更改的属性。我知道 CAML 可用于在特定站点内搜索数据。但是,我还没有找到可以为子站点执行此操作的 API。我被迫进行递归搜索并使用 for 循环。就我而言,我们的服务器上可以嵌套数千个站点。
这个逻辑只做一层——但在存在数千个子站点时效率不高。
public bool SiteExists(ClientContext context, string myGuid)
{
Web oWebsite = context.Web;
context.Load(oWebsite, website => website.Webs, website => website.Title, website => website.Description, website => website.Id);
context.ExecuteQuery();
for (int i = 0; i != oWebsite.Webs.Count; i++)
{
if (String.Compare(oWebsite.Webs[i].Id.ToString(), myGuid, true) == 0)
{
return true;
}
}
return false;
}