如何从特定级别遍历我的所有站点。目前,我在以下位置有网站: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传递到我的方法中。
谢谢你的帮助。
发布于 2011-02-17 22:09:51
/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();
}
}https://stackoverflow.com/questions/5028230
复制相似问题