0

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

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 服务器上运行此代码?)

4

1 回答 1

3

我认为 SPWebservice.ContentService 不会为您提供所有服务,因此不是所有 WebApp,此代码对我来说运行良好:

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);
                        }
                    }
                }
            }
        }
于 2013-09-27T06:51:39.963 回答