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
чтобы увидеть каталог сайта (при условии, что у вас достаточно прав доступа к сайту).