2011-02-17 68 views
1

如何从特定级别遍历我的所有网站。目前,我的网站位于以下位置:http://myintranet.com/sites在SharePoint 2010中通过特定级别的网站迭代

我想要做的是输出我所有的网站/网站,因为我有其他的子级网站。

我该怎么做?

此刻,我的代码看起来是这样的:

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传递到我的方法中。

感谢您的任何帮助。

回答

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(); 
    } 
} 
+0

我真的很感谢你的回复。明天我会放弃这一点。这一直在困扰我整天。 :-)从来没有想过这将是一个网站集合。 – R100 2011-02-17 20:02:46