C# 如何循环浏览SharePoint网站的所有网站和子网站
我试图在一个网站下的所有网站和这些网站的子网站之间进行循环 我的父母网站 (这是一个子站点,不是根站点) 子网 (这是一个子网,可能有子网,也可能没有子网) 我唯一尝试的就是进入网站集并在所有网站上循环,这是一个更长的过程,因为我知道唯一需要检查的子网站。我的网站集有多个子网站。我不想循环浏览所有的SUB站点 这段代码可以工作,但它需要花费大量的时间,并且它会循环遍历所有不需要检查的子网站C# 如何循环浏览SharePoint网站的所有网站和子网站,c#,asp.net,sharepoint,sharepoint-2010,sharepoint-2013,C#,Asp.net,Sharepoint,Sharepoint 2010,Sharepoint 2013,我试图在一个网站下的所有网站和这些网站的子网站之间进行循环 我的父母网站 (这是一个子站点,不是根站点) 子网 (这是一个子网,可能有子网,也可能没有子网) 我唯一尝试的就是进入网站集并在所有网站上循环,这是一个更长的过程,因为我知道唯一需要检查的子网站。我的网站集有多个子网站。我不想循环浏览所有的SUB站点 这段代码可以工作,但它需要花费大量的时间,并且它会循环遍历所有不需要检查的子网站 using(SPSite site = new SPSite(“http://myserver/
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)
{
}
}
}
要访问网站下的所有子网站(包括间接子网站),您可以在每个直接子网站上递归访问.Webs
属性,但从SPSite
网站集合对象的.AllWebs
属性开始更简单
.AllWebs
返回的SPWebCollection的.webinfo
属性提供了一个轻量级SPWebInfo
对象的列表。您可以使用此轻量级集合获取所关心的站点的筛选列表,而无需实例化和处置集合中的任何其他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))
{
}
}
}
string webUrl=“/mysitecol/subweb/subweb”;
使用(SPSite站点=新SPSite(“http://myserver/mysitecol")
{
List webinfo=site.AllWebs.webinfo.FindAll(
代表(网络信息网络信息)
{
//筛选以仅获取以所需URL开头的网站
返回webInfo.ServerRelativeUrl.StartsWith(webUrl);
}
);
foreach(webInfo中的SPWebInfo webInfo)
{
使用(SPWeb=site.OpenWeb(webInfo.Id))
{
}
}
}
您可以使用SPWeb
对象的.Webs
属性访问其直接子网站
using(SPSite site = new SPSite("http://myserver/mysitecol")
{
using(SPWeb parentweb = site.OpenWeb("subweb/subweb")
{
foreach(SPWeb web in parentweb.Webs)
{
}
}
}
要访问网站下的所有子网站(包括间接子网站),您可以在每个直接子网站上递归访问.Webs
属性,但从SPSite
网站集合对象的.AllWebs
属性开始更简单
由.AllWebs
返回的SPWebCollection的.webinfo
属性为您提供了一个轻量级SPWebInfo
对象的列表。您可以使用此轻量级集合获取所关心的站点的筛选列表,而无需实例化和处置集合中的任何其他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))
{
}
}
}
string webUrl=“/mysitecol/subweb/subweb”;
使用(SPSite站点=新SPSite(“http://myserver/mysitecol")
{
List webinfo=site.AllWebs.webinfo.FindAll(
代表(网络信息网络信息)
{
//筛选以仅获取以所需URL开头的网站
返回webInfo.ServerRelativeUrl.StartsWith(webUrl);
}
);
foreach(webInfo中的SPWebInfo webInfo)
{
使用(SPWeb=site.OpenWeb(webInfo.Id))
{
}
}
}
它只会给直接站点而不是直接子站点的子站点。好吧,当你循环时,你可以递归地访问每个子站点的.webs
属性,但是我怀疑在SPSite
对象上使用AllWebs.WebsInfo
属性会更快。我会更新我的答案。会的只给直接网站而不是直接子网站的子网站明白了。好吧,你可以在循环时递归访问每个子网站的.webs
属性,但我怀疑在SPSite
对象上使用AllWebs.WebsInfo
属性会更快。我会更新我的答案。