在SharePoint 2010中迭代特定级别的站点

时间:2011-02-17 11:18:38

标签: sharepoint-2010

如何从特定级别迭代我的所有网站。目前,我的网站位于以下位置: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传递到我的方法中。

感谢您的帮助。

1 个答案:

答案 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();
    }
}