如何遍历 SharePoint 网站的所有网站和子网站
How to loop through all webs and sub webs of a SharePoint Web
我正在尝试遍历一个网站下的所有网站和这些网站的子网站。
我的父网站
http://EXAMPLE.com/parentweb(这是一个子站点,不是根站点)
子网
http://example.com/parentweb/subweb(这是可能有也可能没有子网的子网之一)
我唯一尝试的是转到网站集并遍历所有网站,这是一个更长的过程,因为我知道唯一需要检查的子网站。我的网站集有多个子网站。我不想遍历所有订阅站点。
此代码有效,但它需要花费大量时间,并且循环遍历所有不需要检查的子站点
using(SPSite site = new SPSite(“http://myserver/mysitecol”)
{
foreach(SPWeb web in site.AllWebs)
{
}
}
您可以使用 SPWeb
对象的 .Webs
属性 访问其 直接 子站点。
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
using(SPWeb parentweb = site.OpenWeb("subweb/subweb")
{
foreach(SPWeb web in parentweb.Webs)
{
}
}
}
要访问 Web 下的 所有(包括间接的)后代子站点,您可以在每个直接后代上递归地访问 .Webs
属性,但是从 SPSite
网站集对象的 .AllWebs
属性 开始会更直接。
.AllWebs
返回的 SPWebCollection 的 .WebsInfo
属性 为您提供 List<>
轻量级 SPWebInfo
对象。您可以使用这个轻量级集合来获取您关心的 Web 的筛选列表,而无需实例化和处理集合中的任何其他 SPWeb。
string webUrl = "/mysitecol/subweb/subweb";
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
List<SPWebInfo> websInfo = site.AllWebs.WebsInfo.FindAll(
delegate(WebsInfo webInfo)
{
// filter to get us only the webs that start with our desired URL
return webInfo.ServerRelativeUrl.StartsWith(webUrl);
}
);
foreach(SPWebInfo webInfo in websInfo)
{
using(SPWeb web = site.OpenWeb(webInfo.Id))
{
}
}
}
我正在尝试遍历一个网站下的所有网站和这些网站的子网站。
我的父网站
http://EXAMPLE.com/parentweb(这是一个子站点,不是根站点)
子网 http://example.com/parentweb/subweb(这是可能有也可能没有子网的子网之一)
我唯一尝试的是转到网站集并遍历所有网站,这是一个更长的过程,因为我知道唯一需要检查的子网站。我的网站集有多个子网站。我不想遍历所有订阅站点。
此代码有效,但它需要花费大量时间,并且循环遍历所有不需要检查的子站点
using(SPSite site = new SPSite(“http://myserver/mysitecol”)
{
foreach(SPWeb web in site.AllWebs)
{
}
}
您可以使用 SPWeb
对象的 .Webs
属性 访问其 直接 子站点。
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
using(SPWeb parentweb = site.OpenWeb("subweb/subweb")
{
foreach(SPWeb web in parentweb.Webs)
{
}
}
}
要访问 Web 下的 所有(包括间接的)后代子站点,您可以在每个直接后代上递归地访问 .Webs
属性,但是从 SPSite
网站集对象的 .AllWebs
属性 开始会更直接。
.AllWebs
返回的 SPWebCollection 的 .WebsInfo
属性 为您提供 List<>
轻量级 SPWebInfo
对象。您可以使用这个轻量级集合来获取您关心的 Web 的筛选列表,而无需实例化和处理集合中的任何其他 SPWeb。
string webUrl = "/mysitecol/subweb/subweb";
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
List<SPWebInfo> websInfo = site.AllWebs.WebsInfo.FindAll(
delegate(WebsInfo webInfo)
{
// filter to get us only the webs that start with our desired URL
return webInfo.ServerRelativeUrl.StartsWith(webUrl);
}
);
foreach(SPWebInfo webInfo in websInfo)
{
using(SPWeb web = site.OpenWeb(webInfo.Id))
{
}
}
}