是否可以获取 SharePoint 服务器的网站集列表

本文关键字:网站 列表 服务器 SharePoint 获取 是否 | 更新日期: 2023-09-27 18:32:55

我正在尝试获取 SharePoint 服务器上网站集列表的完整输出,以便我可以枚举它们并收集数据。我找到了以下代码:

foreach (SPWebApplication wa in SPWebService.ContentService.WebApplications)
{
    foreach (SPSite sc in wa.Sites)
    {
        try
        {
            Console.WriteLine("Do something with site at: {0}", sc.Url);
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception occured: {0}'r'n{1}", e.Message, e.StackTrace);
        }
        finally
        {
            sc.Dispose();
        }
    }
}

但不幸的是,这引发了以下错误:

System.NullReferenceException:对象引用未设置为实例 的对象。

是否有可能的方法执行此操作,或者我是否必须提供服务器名称(即使我直接在 SharePoint 服务器上运行此代码?

是否可以获取 SharePoint 服务器的网站集列表

我认为SPWebservice.ContentService并没有为您提供所有服务,因此也不是所有的WebApps,这段代码对我来说运行良好:

SPServiceCollection services = SPFarm.Local.Services;
        foreach(SPService curService in services)
        {
            if(curService is SPWebService)
            {
                SPWebService webService = (SPWebService)curService;

                foreach(SPWebApplication webApp in webService.WebApplications)
                {
                    foreach(SPSite sc in webApp.Sites)
                    {
                        try
                        {
                            Console.WriteLine("Do something with site at: {0}", sc.Url);
                        }
                        catch(Exception e)
                        {
                            Console.WriteLine("Exception occured: {0}'r'n{1}", e.Message, e.StackTrace);
                        }
                    }
                }
            }
        }