2011-02-17 55 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

相關問題