SharePoint: Как определить каталог сайта сайта программно - PullRequest
1 голос
/ 16 февраля 2009

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

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

Bye, Flo

UPDATE

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

Ответы [ 3 ]

1 голос
/ 17 февраля 2009

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

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

<code><br>
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;
}
0 голосов
/ 17 февраля 2009

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

CREATE PROCEDURE [dbo].[my_sitemap](
   @PartialUrl nvarchar(260)
)

AS
   SELECT    ID, FullUrl, Title, RequestAccessEmail
   FROM      Webs
   WHERE     FullUrl LIKE @PartialUrl + '%'
   ORDER BY  FullUrl
GO

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

0 голосов
/ 17 февраля 2009

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

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

...