首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.NET中使用CSOM统计SharePoint站点中的子站点数量?

如何在.NET中使用CSOM统计SharePoint站点中的子站点数量?
EN

Stack Overflow用户
提问于 2020-01-05 22:22:38
回答 2查看 550关注 0票数 0

我想要计算sharepoint中单个网站中可用的子网站、组和列表的数量,并将其显示在列表中。如何使用CSOM在.NET中做到这一点。我试过这样做,但这不起作用。

代码语言:javascript
复制
 Tenant tenant = new Tenant(ctx);
                //SiteProperties sites = tenant.GetSitePropertiesByUrl("https://developer19.sharepoint.com/sites/codesite",true);
                var sites = tenant.GetSiteProperties(0, true);
                sites.Context.Load(sites);
                sites.Context.ExecuteQuery();
                foreach( var siteProp in sites)
                {
                    Console.WriteLine("Site Collection '{0}' has '{1}' subwebs", siteProp.Url, siteProp.WebsCount);
                }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-06 14:47:01

下面的CSOM C#代码供您参考。

代码语言:javascript
复制
public static int subSiteCount = 0;
public static int groupCount = 0;
public static int listCount = 0;

static void  Main(string[] args)
{
    string siteUrl = "https://tenant.sharepoint.com/sites/team";
    string userName = "test@tenant.onmicrosoft.com";
    string password = "xxx";

    var securePassword = new SecureString();
    foreach (char c in password.ToCharArray()) securePassword.AppendChar(c);
    var credential = new SharePointOnlineCredentials(userName, securePassword);
    GetAllSubWebs(siteUrl, userName, securePassword);
    Console.WriteLine("Sub Site Count:"+subSiteCount+" Group Count:"+groupCount+" List Count:"+listCount);
}
private static void GetAllSubWebs(string path, string userName, SecureString password)
{
    // ClienContext - Get the context for the SharePoint Online Site               
    using (var clientContext = new ClientContext(path))
    {
        // SharePoint Online Credentials    
        clientContext.Credentials = new SharePointOnlineCredentials(userName, password);

        // Get the SharePoint web  
        Web web = clientContext.Web;
        clientContext.Load(web, website => website.Webs, website => website.Title);

        // Execute the query to the server  
        clientContext.ExecuteQuery();

        // Loop through all the webs  
        foreach (Web subWeb in web.Webs)
        {
            // Check whether it is an app URL or not - If not then get into this block  
            if (subWeb.Url.Contains(path))
            {
                string newpath = subWeb.Url;

                GetAllSubWebs(newpath, userName, password);

                clientContext.Load(subWeb.SiteGroups);
                clientContext.Load(subWeb.Lists);                        
                clientContext.ExecuteQuery();
                subSiteCount += 1;
                groupCount += subWeb.SiteGroups.Count;
                listCount += subWeb.Lists.Count;
                //Console.WriteLine("GroupCount:" + subWeb.SiteGroups.Count);
                //Console.WriteLine("ListCount:" + subWeb.Lists.Count);
                //Console.WriteLine(subWeb.Title + "-------" + subWeb.Url);
            }
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-01-05 23:30:50

最后,我执行了这段代码,并获得了站点中的子站点数量:)

代码语言:javascript
复制
using System;
using System.Security;
using Microsoft.SharePoint.Client;

namespace GetAllSubsites
{
    class Program
    {
        static void Main(string[] args)
        {
            string userName = "kailash@kailash.cf";
            string siteURL = "https://developer19.sharepoint.com/sites/codesite";
            SecureString password = new SecureString();
            foreach (char c in "pAsSwOrD".ToCharArray())
                password.AppendChar(c);

            using (var clientContext = new ClientContext(siteURL))
            {  
                clientContext.Credentials = new SharePointOnlineCredentials(userName, password);

                Web web = clientContext.Web;
                clientContext.Load(web, website => website.Webs);

                clientContext.ExecuteQuery();
                int b = 0;
                foreach (Web subWeb in web.Webs)
                {
                    if (subWeb.Url.Contains(siteURL))
                        b += 1;
                }
                Console.WriteLine("Total Number of Subsite is " + b);
            }
            Console.ReadLine();
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59600793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档