SharePoint:如何以编程方式确定站点的站点目录

时间:2009-02-16 18:34:35

标签: sharepoint moss sitedirectory

是否有办法获取网站(网站集)网站目录,即在协作或发布门户的网站集设置中定义的目录?

当然,我可以遍历网站集的所有SPWebs,但我希望有一种更简单的方法来获取目录,因为信息似乎已存储在某处。

再见 FLO

更新

当然我想以编程方式获取信息。

3 个答案:

答案 0 :(得分:1)

网站目录路径存储在根网站属性包

以下代码取自内部实用程序类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; }

答案 1 :(得分:0)

您指的是网站内容和结构下的网站目录吗?

如果是这样,您可以浏览到http://sitename/_layouts/sitemanager.aspx以查看网站目录(假设您拥有该网站的足够权限)。

答案 2 :(得分:0)

对于它的价值,如果您有权访问WSS数据库,您可以利用现有的SP或创建自己的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

对我来说工作得很好。希望这会有所帮助。