配置和部署 Web 部件 (SharePoint Server 2010)

 

适用于: SharePoint Foundation 2010, SharePoint Server 2010

上一次修改主题: 2016-11-30

本文提供配置安全 Web 部件并将其部署到服务器上的 Bin 目录或 .NET Framework 全局程序集缓存 (GAC) 中所需的信息和过程。

本文内容:

Microsoft SharePoint Server 包含一组用户可在安装该产品后添加到页面中的 Web 部件。如果组织需要自定义 Web 部件,开发人员可以编写自定义 ASP.NET Web 部件,并要求您将这些部件安装到 SharePoint Server 的部署中。此过程通常需要先测试并批准代码,然后才能在完全信任环境中部署 Web 部件。使用 Visual Studio 2010 的开发人员可以通过右键单击相应项目并选择“部署”,将某个 Web 部件部署到 SharePoint Server 中。Web 部件的目标由开发人员在 Visual Studio 2010 中创建项目时使用 SharePoint 服务器建立的信任级别确定。

通过 Microsoft SharePoint Server 2010 可以配置一个沙盒环境,在此环境中,网站集管理员、网站管理员或信息工作者可以在沙盒工作进程中部署和运行部分受信任的 Web 部件和解决方案。在沙盒环境中运行的 Web 部件和解决方案具有针对服务器操作系统和硬件的有限访问权限,而且它们与 Web 应用程序的其他部件是隔离的。

有关使用沙盒解决方案的详细信息,请参阅沙盒解决方案管理 (SharePoint Server 2010)

SharePoint Server 使用 Microsoft .NET Framework 提供的一些配置管理设置。其中的一些设置存储在 XML 配置文件中,并提供可供服务器管理员用来管理 Web 应用程序及其环境的各类设置。有关 ASP.NET 配置文件的详细信息,请参阅 MSDN Library Online 中的“保护 ASP.NET 应用程序和 Web 服务”中的 Machine.Config 和 Web.Config 详解 (https://go.microsoft.com/fwlink/?linkid=103450&clcid=0x804)。

配置选项

系统管理员可将 ASP.NET Web 部件部署到 SharePoint Server 的以下任一位置:

  • Bin 目录   存储在 Web 应用程序的根目录下的 bin 文件夹中。

  • 全局程序集缓存 (GAC)   所有标准的 Web 部件都会自动安装到 .NET Framework 的公共语言运行时所在的 GAC(位于 %windir%\assembly)中。可以在各个应用程序之间共享存储在 GAC 中的 Web 部件。

下表描述了每个位置的优缺点。

部署位置 优点 缺点

Bin 目录

一个部分信任的位置。默认情况下,从该目录运行的代码具有较低级别的代码访问安全权限。如果 Web 部件需要跨应用程序进行访问或访问超过默认权限允许范围的内容,则管理员必须明确提升授予 Web 部件的权限,这样它才能正常工作。管理员可能会希望程序集在 Bin 目录中运行,并使用已知最小的必需代码访问安全权限集。

由于 Bin 目录特定于 Web 应用程序,因此,如果您希望将代码隔离到单个 Web 应用程序,则可以使用此方法。

若要在任意位置运行 Web 部件,则必须将程序集部署到每台服务器上的 Bin 目录中。

GAC

一个可用来部署已签名程序集的全局位置,默认情况下,已签名程序集可在完全信任模式下运行。由于对这些程序集进行了全局安装,因此可以在任何 Web 应用程序中使用它们。

通常,对于已安装到 GAC 的代码,没有任何代码访问安全限制;因此,您将无法获得深度防御安全。

此外,很难将程序数据库 (.pdb) 文件部署到 GAC 内的程序集。

设置安全属性

存储在 Bin 目录中的 ASP.NET Web 部件具有其他安全属性。您可以决定是否为 Web 部件设置这些属性,具体取决于您打算如何使用 Web 部件。

Bin 目录是一个部分信任的位置。因此,Web 部件在执行时不会自动授予完全信任代码权限。由于对调用 Web 部件的代码仅授予部分信任权限,因此 Web 部件开发人员必须对 ASP.NET Web 部件设置 AllowPartiallyTrustedCallers 属性。

使用 AllowPartiallyTrustedCallers 属性将组件标记为“安全”时,开发团队负有安全实施的责任。

默认情况下,Bin 目录的代码访问安全权限非常低。您应仔细测试您的 Web 部件,以确定要分配的正确权限级别,确保 Web 部件不会给您的环境带来安全风险。

可以通过以下两种方式之一提升权限:

  • (建议)创建一个信任策略文件并将 Web.config 文件指向这个新文件。虽然这种方式更为复杂,但它使您能够设置 Web 部件的精确权限。有关信任策略文件的详细信息,请参阅 MSDN Library Online 中的 Microsoft Windows SharePoint Services 和代码访问安全(该链接可能指向英文页面)(https://go.microsoft.com/fwlink/?linkid=103436&clcid=0x804)(该链接可能指向英文页面)。

  • 提升 Bin 目录的整体信任级别。在 Web 应用程序根目录下的 Web.config 文件中,找到 trust 元素。trust 元素的 level 属性的默认值为 WSS_Minimal。可以将此级别更改为 WSS_Medium。虽然这种方式更为简单,但它将授予您可能不需要的任意新权限,并且此方式的安全性没有创建信任策略文件的安全性高。

安全控件列表

SharePoint 产品的基本假定是不受信任的用户可以在运行 SharePoint Server 的系统内上载和创建 .aspx 页。虽然应阻止这些用户在 .aspx 页内添加服务器端代码,但应提供一个可供这些不受信任用户使用的已批准控件的列表。在 SharePoint Server 中,此列表由安全控件列表提供。

安全控件列表包含特定于 SharePoint 网站的控件和 Web 部件的名称,服务器管理员可以指定在网站内的任何 .aspx 页上调用这些控件和 Web 部件是安全的。此列表是 Web 应用程序根目录下的 Web.config 文件的一部分。

部署和配置 Web 部件

用于部署新 Web 部件的方法将取决于开发人员提供的已完成包。如果开发人员以单个动态链接库 (DLL) 文件的形式向您提供 Web 部件,则可以手动将 DLL 复制到 Web 应用程序的 Bin 文件夹中来进行部署。如果开发人员向您提供包含 Web 部件的 CAB 文件,则可以使用 Windows PowerShell 部署 Web 部件。

手动部署和配置 Web 部件

  1. 确认您拥有以下管理凭据:

    • 您必须是承载 SharePoint Server 的服务器上的本地 Administrators 组的成员。
  2. 将项目的 Bin 目录中的 <YourWebPartName>.dll 程序集复制到 Web 应用程序根目录中的 Bin 目录。例如:C:\inetpub\wwwroot\wss\VirtualDirectories\80\。

  3. 在应用程序根目录中找到 Web.config 文件并将其打开以进行编辑。

  4. 将自定义程序集的以下安全控制项添加到 Web.config 文件:

    <SafeControl Assembly="<YourWebPartName>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="<YourWebPartNamespace>" TypeName="*" Safe="True" AllowRemoteDesigner="True"/>
    

    其中:

    1. <YourWebPartName> 是正在部署的 Web 部件的名称。

    2. <YourWebPartNamespace> 是与 Web 部件关联的命名空间。

作为手动将 Web 部件安装到 Bin 文件夹或手动更改 Web.config 文件的一种替代方法,可以使用 Windows PowerShell 安装 Web 部件包。为了使此过程能够工作,开发人员或系统管理员必须为 Web 部件创建 CAB 解决方案包。有关创建 CAB 包的详细信息,请参阅 MSDN Library Online 中的文档解决方案和 Web 部件包 (https://go.microsoft.com/fwlink/?linkid=95855&clcid=0x804)。创建 CAB 文件之后,请按照以下步骤部署 Web 部件。

使用 Windows PowerShell 部署 Web 部件

  1. 确认您满足以下最低要求:请参阅 Add-SPShellAdmin

  2. 在“开始”菜单上,单击“所有程序”。

  3. 单击“Microsoft SharePoint 2010 产品”。

  4. 单击“SharePoint 2010 Management Shell”。

  5. 在 Windows PowerShell 命令提示符 (PS C:\>) 处,键入以下命令,然后按 Enter:

    Install-SPWebPartPack -LiteralPath "<PathToCabFile>" -Name "<WebPartName>"
    

    其中:

    • <PathToCabFile> 是正在部署的 CAB 文件的完整路径。

    • <WebPartName> 是正在部署的 Web 部件的名称。

备注

前面的过程显示了使用 Install-SPWebPartPack 部署 Web 部件的常用方法。您可以指定其他参数来更改 Web 部件的部署方式。有关详细信息,请参阅 Install-SPWebPartPack

备注

我们建议您在执行命令行管理任务时使用 Windows PowerShell。Stsadm 命令行工具已被弃用,仍然包含该工具是为了支持与之前产品版本的兼容性。

将组件添加到 Web 部件库

每个 Web 部件都应具有一个 .webpart 文件,该文件是一个用于描述 Web 部件的 XML 文件。.webpart 文件还会使您的 Web 部件出现在 Web 部件库中。下面的过程是在部署 Web 部件并将其在安全控件列表中注册之后创建 .webpart 文件的最简单方法。

将组件添加到 Web 部件库

  1. 确认您拥有以下管理凭据:

    • 您必须是 Farm Administrators 组的成员。
  2. 若要创建 .webpart 文件,请导航至 http://<MyServer>/_layouts/newdwp.aspx,其中 <MyServer> 是用于部署 SharePoint 网站的服务器的名称。

  3. 选中 <YourWebPartNamespace>.<YourWebPartName> 旁边的复选框。

  4. 单击“导入库”以将 YourWebPartName Web 部件添加到工作组网站库中。

  5. 在 Web 部件库中选择“编辑”来编辑 Web 部件,然后单击“导入”。

    系统会提示您指定 .webpart 文件的位置。您也可以导出 ASP.NET Web 部件并将其导入到 SharePoint 网站。