如何从特定级别迭代我的所有网站。目前,我的网站位于以下位置:http://myintranet.com/sites。
我想要做的是从/ sites输出我的所有网站,因为我在该级别下面有其他子网站。
我该怎么做?
目前,我的代码如下所示:
private void GetNavigation()
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPWeb intranetSite = new SPSite(SPContext.Current.Web.Url + "/sites/").OpenWeb())
{
SPWebCollection subSites = intranetSite.Webs;
NavigationOutputHtml.Text = CreateNavigationHtml(subSites);
}
});
}
我在“CreateNavigationHtml”方法中进行了所有迭代。但我似乎无法将正确的站点从SPWebCollection传递到我的方法中。
感谢您的帮助。
答案 0 :(得分:2)
/sites
不是网站,而是Managed Path。在SharePoint中,IIS网站是Web应用程序。托管路径允许SharePoint在单个IIS网站中拥有多个网站集。然后SharePoint站点捆绑在网站集中。
因此,要在Web应用程序的/sites
托管路径中的所有网站集中获取所有网站,您将需要以下代码:
foreach (SPSite site in SPContext.Current.Site.WebApplication.Sites)
{
try
{
if (SPSite.Exists(new Uri(site.Url)) && site.ServerRelativeUrl.StartsWith("/sites/"))
{
SPWebCollection subSites = site.AllWebs;
NavigationOutputHtml.Text = CreateNavigationHtml(subSites);
}
}
finally
{
site.Dispose();
}
}