SharePoint: как определить каталог сайта сайта программно

Есть ли способ получить каталог сайта сайта (семейства сайтов), который определен в настройке семейства веб-сайтов портала совместной работы или публикации?

Конечно, я мог бы пройтись по всем SPWebs семейства сайтов, но я надеюсь, что есть более простой способ получить каталог, поскольку информация, похоже, уже где-то хранится.

Пока, Фло

ОБНОВИТЬ

Конечно, я хочу получить информацию программно.

3 ответа

Решение

Путь к каталогу сайта хранится в корневом каталоге веб-ресурсов.

Приведенный ниже код, взятый из внутреннего служебного класса SiteDirectoryUtil, показывает логику того, как определить путь


internal static string GetLocalSiteDirectoryLocation(SPWeb rootWeb) { if (rootWeb != null) { if (rootWeb.AllProperties.ContainsKey("DefaultSiteDirectorySiteId")) { string str = rootWeb.AllProperties["DefaultSiteDirectorySiteId"] as string; if (string.IsNullOrEmpty(str)) { return string.Empty; } if (!rootWeb.AllProperties.ContainsKey("DefaultSiteDirectoryWebId")) { return string.Empty; } string str2 = rootWeb.AllProperties["DefaultSiteDirectoryWebId"] as string; if (string.IsNullOrEmpty(str2)) { return string.Empty; } try { using (SPSite site = new SPSite(new Guid(str), rootWeb.Site.Zone)) { using (SPWeb web = site.OpenWeb(new Guid(str2))) { return web.ServerRelativeUrl; } } } catch (FileNotFoundException) { return string.Empty; } } else { return string.Empty; } } return string.Empty; }

Что бы это ни стоило, если у вас есть доступ к базам данных WSS, вы можете использовать существующие SP или создать свои собственные. Я хотел вернуть такие вещи, как "RequestAccessEmail" и включить их в наши собственные карты сайта (иногда полезно знать, кто является владельцем сайта). Наш SP на самом простом...

СОЗДАТЬ ПРОЦЕДУРУ [dbo].[My_sitemap](
   @PartialUrl nvarchar(260))

КАК
   ВЫБЕРИТЕ ID, FullUrl, Заголовок, RequestAccessEmail
   ОТ Сети
   ГДЕ FullUrl НРАВИТСЯ @PartialUrl + '%'
   ЗАКАЗАТЬ ПО FullUrl
ИДТИ

Работал очень хорошо для меня. Надеюсь это поможет.

Вы имеете в виду каталог сайта, который находится в разделе Содержание и структура сайта?

Если это так, вы можете перейти к http://sitename/_layouts/sitemanager.aspx чтобы увидеть каталог сайта (при условии, что у вас достаточно прав доступа к сайту).

Другие вопросы по тегам