沙盒解决方案 是 Microsoft SharePoint 2010 中的一项功能,使网站集合用户能够上传自己的自定义代码解决方案。 常见的沙盒解决方案是用户上传自己的 Web 部件。
在沙盒中运行的 SharePoint 应用程序在受监控的安全进程中运行,并且只能访问 Web 场的一小部分。 Microsoft SharePoint 2010 使用功能、解决方案库、解决方案监视和验证框架的组合来启用沙盒解决方案。
指定项目信任级别
Visual Studio 通过名为 Sandboxed Solution 的布尔项目属性支持沙盒解决方案。 可以在项目中随时设置此属性,也可以在 SharePoint 自定义向导中创建项目时指定此属性。
注释
创建项目后更改项目的 沙盒解决方案 属性可能会导致验证错误。
如果将 沙盒解决方案 属性设置为 false 或者选择“作为服务器场解决方案部署”选项,则该解决方案被视为服务器场范围的解决方案。 但是,如果 沙盒解决方案 属性设置为 true ,或者选择向导中的 “部署”作为沙盒解决方案 选项,则解决方案将处理方式与场解决方案不同。
SharePoint 网站层次结构
若要了解沙盒解决方案的工作原理,它有助于知道 SharePoint 网站在范围内是分层的。 顶级元素称为服务器场,其余元素都从属于它:
Web 服务器农场
Web 应用程序 A
网站集 A1
站点 A1a
Web 应用程序 B
网站集合 B1
站点 B1a
站点 B1b
网站集合 B2
站点 B2a
如你所看到的,Web 场可以包含一个或多个 Web 应用程序,而后者又可以包含一个或多个网站集,这些网站集可以包含子网站等。 对一个网站集所做的更改仅影响该网站集,而不会影响其他网站集。 然而,在 Web 服务器场级别所做的更改会影响场中的所有网站集。
Windows SharePoint Services (WSS) 3.0 允许您仅将解决方案部署到服务器场级别,但 Microsoft SharePoint Foundation 允许您部署到服务器场级别(服务器场解决方案)或网站集级别(沙盒解决方案)。
为什么是沙盒解决方案?
在 WSS 3.0 中,解决方案只能部署到场级别。 这意味着,可以部署可能影响整个 Web 场及其下运行的其他所有网站集和应用程序的潜在有害或不稳定的解决方案。 但是,通过使用沙盒解决方案,可以将解决方案部署到服务器场的子区域,即特定的网站集。 为了提供额外的保护,解决方案的程序集不会加载到主 IIS 进程(w3wp.exe)。 而是将其加载到单独的进程(SPUCWorkerProcess.exe)。 此过程受到监控并实施配额以及限流措施,以保护服务器场免受可能导致损害的沙盒化解决方案的影响,例如运行消耗CPU周期的密集型循环。
网站集合解决方案库
Windows SharePoint Services 2010 具有称为“网站集解决方案库”的功能。可以从 SharePoint 2010 管理中心页面或打开“网站作”菜单、选择“网站设置”,然后选择 SharePoint 网站中的“库”下的“解决方案”链接来访问此功能。 解决方案库是解决方案的存储库,使网站集合管理员能够管理其网站集合中的解决方案。
解决方案库是存储在 SharePoint 网站的根 Web 中的文档库。 解决方案库取代了网站模板并支持解决方案包。 上传 SharePoint 解决方案包(.wsp)文件时,该文件将作为沙盒解决方案进行处理。
沙盒解决方案限制
部署沙盒解决方案时,可供其使用 SharePoint 功能的数组仅限于帮助减少它可能具有的任何安全漏洞。 其中一些限制包括:
沙盒解决方案具有可用的可部署解决方案元素的受限子集。 可能易受攻击的 SharePoint 项目模板(如网站定义和工作流)不可用。
SharePoint 在一个独立于主 IIS 应用程序池(w3wp.exe)进程的进程(SPUCWorkerProcess.exe)中运行沙盒解决方案代码。
无法将映射的文件夹添加到项目中。
Microsoft SharePoint Server 程序集Microsoft.Office.Server 中的类型不能用于沙盒解决方案。 此外,只能在沙盒解决方案中使用 Microsoft SharePoint Foundation 程序集Microsoft.SharePoint 中的类型。
请务必注意,将 SharePoint 解决方案指定为沙盒解决方案不会影响 SharePoint 服务器;它仅确定如何将 SharePoint 项目从 Visual Studio 部署到 SharePoint,以及它绑定到的程序集。 它不会影响生成的 .wsp 文件,. wsp 文件没有直接关联到 沙盒解决方案 属性的数据。
沙盒解决方案中的功能和元素
沙盒解决方案支持以下功能和元素:
内容类型/字段
自定义操作
声明性工作流
事件接收器
功能标注
列表定义
列表实例
模块/文件
导航
Onet.xml
SPItemEventReceiver
SP列表事件接收器 (SPListEventReceiver)
SPWebEventReceiver
支持所有继承自
System.Web.UI.WebControls.WebParts.WebPart的Web部件Web 部件
WebTemplate 特征元素(而不是 Webtemp.xml)
可视化 Web 部件
沙盒解决方案不支持以下功能和元素:
应用程序页
自定义操作组
适用于农场的功能
HideCustomAction元素Web 应用程序范围内的功能
代码驱动的工作流