Итерация по сайтам на определенном уровне в SharePoint 2010 - PullRequest
1 голос
/ 17 февраля 2011

Как перебрать все мои сайты с определенного уровня. На данный момент у меня есть сайты в следующих местах: 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 Ответ

2 голосов
/ 17 февраля 2011

/sites - это не веб-сайт, это Управляемый путь .В SharePoint веб-сайт IIS является веб-приложением.Управляемые пути позволяют SharePoint иметь несколько семейств сайтов на одном веб-сайте IIS.И затем сайты SharePoint объединяются в семейство сайтов.

Таким образом, чтобы получить все сайты во всех семействах сайтов в /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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...