使用客户端对象模型使用站点 ID (GUID) 递归搜索网站



使用客户端对象模型,我正在寻找最有效的方法来搜索 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;
    }
public bool SiteExists(ClientContext context, string myGuid) {
    Guid id = new Guid(myGuid);
    Site site = context.Site;
    Web foundWeb = site.OpenWebById(id);
    context.Load(foundWeb);
    context.ExecuteQuery();
    if(foundWeb != null) {
        return true;
    }
    return false;
}

相关内容

  • 没有找到相关文章

最新更新