65.9K
CodeProject 正在变化。 阅读更多。
Home

自动化 SharePoint 中的模板上传和站点创建

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.50/5 (3投票s)

2008年4月20日

CPOL

3分钟阅读

viewsIcon

46322

downloadIcon

273

本文介绍了如何使用 SharePoint 对象模型上传站点模板并创建新站点。

引言

我们通常手动上传站点模板。即使在站点创建中,我们也遵循手动流程。但是 SharePoint 对象模型提供了自动化这些流程的接口。几个月前,我们的客户要求我们自动化站点创建过程。然后,我开始了这项工作,最终发现这个过程更容易实现。

基础

在 SharePoint 中,站点模板存储在名为“站点模板库”的列表中。要将模板上传到站点,您只需在列表“站点模板库”中上传文件即可。画廊仅存在于 RootWeb 中。在 SharePoint 中,您可以通过访问 site.AllWebs[string.empty]site.RootWeb 来获取根 Web。因此,您需要将模板添加到根 Web 的“站点模板库”中。为此,您必须拥有站点集管理员的凭据。在示例应用程序中,您需要提供站点集管理员的用户名。我使用了一个函数 GetUserToken 来获取站点集管理员的令牌。

要创建站点,您还需要将 Web 添加到 AllWebs 集合。但在那之前,您可能需要将 AllUnsafeUpdates 设置为 true,这可以确保更新在 HTTP GET 请求下工作,而无需安全验证。在站点创建期间,您需要指定模板名称。如果您不提供模板名称,站点仍然会被创建,但如果您尝试访问该站点,系统将提示您选择一个站点模板。

代码分析

每个 Windows 应用程序在执行时都使用凭据。例如,对于桌面应用程序,使用当前登录的 Windows 用户的凭据。对于 Web 应用程序,使用应用程序池用户的凭据。当您使用如下代码打开 SharePoint 站点时,将使用当前用户的凭据

SPSite site = new SPSite(siteUrl);

但是,您可以将 SharePoint 用户的 SPUserToken 作为第二个参数传递。要获取用户的 SPToken,我编写了一个函数 GetUserToken。如果 SharePoint 站点使用 Windows 身份验证,并且您使用站点集管理员的凭据运行应用程序,那么代码将顺利运行,无需传递 SPUserToken。但是,如果您尝试使用非站点集管理员的用户执行代码,则需要指定站点集管理员名称,并且 GetUserToken 函数将返回站点集管理员的 SPUserToken

当您使用 SharePoint 对象模型上传模板时,您需要知道站点模板存储在根 Web 上。要从 SPSite 对象获取根 Web,您将使用

SPSite.RootWeb

SPSIte.AllWebs[strirng.empty]

在根 Web 中,站点模板存储在列表“站点模板库”中。因此,站点模板上传实际上是在“站点模板库”列表中添加模板文件的过程。

要创建站点,最好将 AllowUnsafeUpdates 设置为 true。这可确保对站点的任何更新无需安全验证。在 SPSite.AllWebs.Add 方法中,我传递了 1033 作为区域设置 ID,它指定了英语区域设置。您可以在 Add 方法中指定是否使用唯一权限。如果您将唯一权限设置为 true,则新站点将不会从父站点继承任何安全设置。在这种情况下,您需要将不同的组和用户添加到新站点。如果您继承安全设置而不是唯一权限,则父站点的用户将在当前新站点中获得相同的权限。

结论

SharePoint 对象模型是一个丰富的接口,用于与 SharePoint 功能进行通信。我们还可以使用 SharePoint 提供的 Web 服务来实现这些功能中的大部分。要运行此控制台应用程序,您需要在安装 SharePoint 的地方运行该应用程序,但使用 SharePoint Web 服务,您可以从任何地方执行这些功能。

© . All rights reserved.