Sharpeoint サーバーからすべてのドキュメント ライブラリをループする必要がありますが、サブサイトのサブサイトで失敗しました
まず、以下のメソッドを使用して SiteCollections を取得します
internal List<string> GetAllSite()
{
List<string> siteCollection = new List<string>();
try
{
SPSecurity.RunWithElevatedPrivileges(delegate ()
{
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
{
siteCollection.Add(sc.Url);
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);
}
}
}
}
}
});
}
catch (Exception ex)
{
throw;
}
return siteCollection;
}
その後、次のコードのように、戻りサイトコレクションの URL を使用してサブサイトをループします
using (SPSite site = new SPSite(SiteCollectionUrl))
{
foreach (SPWeb web in site.AllWebs)
{
//i get the subsite url from here
}
}
今ここに私の問題があります。前述のように、サブサイトのサブサイトを取得したかったので、サブサイトの URL を SPSite に渡しますが、サブサイトではなく SiteCollections のみをループします
foreach (site.AllWebs 内の SPWeb Web) <-- つまり、ここでは、サブサイトの URL をパラメーターとして既に渡していますが、ここではサイトコレクション アイテムのみをループします。