在 SharePoint Server 中配置和部署 Web 部件

 

**上一次修改主题:**2018-02-07

**摘要:**了解在 SharePoint Server 2016 和 SharePoint 2013 中如何保护和部署 Web 部件。

SharePoint Server 包括一组 Web 部件,用户可以在安装完产品之后将这些部件添加到页面。如果组织需要自定义 Web 部件,开发人员可以编写自定义 ASP.NET Web 部件并要求你进行安装。此过程通常需要测试和审批代码,然后才能将 Web 部件部署到完全信任的环境中。使用 Visual Studio 的开发人员可以将 Web 部件部署到 SharePoint Server,方法是右键单击项目并选择“部署”。Web 部件的目标由开发人员在 Visual Studio 中创建项目时,在 SharePoint 服务器上建立的信任级别所决定。

SharePoint Server 使用 Microsoft .NET Framework 提供的一些配置管理设置。其中一些设置存储在 XML 配置文件中,为服务器管理员提供各种设置,方便其管理 Web 应用程序及其环境。有关 ASP.NET 配置文件的详细信息,请参阅“保护 ASP.NET 应用程序和 Web 服务”中介绍的 Machine.Config 和 Web.Config

本文内容:

  • 配置选项

  • 设置安全属性

  • 安全控件列表

  • 部署和配置 Web 部件

  • 将组件添加到 Web 部件库

配置选项

ASP.NET Web 部件可部署到 SharePoint Serverbin 目录全局程序集缓存 (GAC) 中。

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

    此位置的优点:

    一个部分信任位置。默认情况下,从此目录运行的代码具有较低级别的代码访问安全权限。如果 Web 部件需要跨应用程序的访问权限或者高于默认权限允许的更多访问权限,管理员必须明确提升授予给 Web 部件的权限,以便其正常运行。管理员可能更希望程序集在 Bin 目录中运行,且使用已知最小的所需代码访问安全权限集。

    此位置的缺点:

    要在任何位置运行 Web 部件,必须将程序集部署到具有 MinRole 前端和应用程序服务器角色的每台 SharePoint Server 2016 服务器和已安装 Web 和应用程序角色的每台 SharePoint 2013 服务器上的 Bin 目录。

  • 全局程序集缓存 (GAC)   所有标准 Web 部件将自动安装在 GAC 中的 %windir%\assembly 下,.NET Framework 的常规语言运行时也位于此处。存储在 GAC 中的 Web 部件可以在应用程序之间共享。

    此位置的优点:

    您可以在其中部署签名程序集的全局位置,默认情况下此位置使用完全信任权限运行。程序集在全局安装,因此可在任何 Web 应用程序中工作。

    此位置的缺点:

    通常情况下,对于安装到 GAC 的代码没有代码访问安全限制。因此,您失去了纵深防御安全的优势。

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

设置安全属性

存储在 Bin 目录中的 ASP.NET Web 部件具有额外的安全性属性。你可以决定是否设置 Web 部件的这些属性,具体取决于你计划如何使用它。

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

使用 AllowPartiallyTrustedCallers 属性将某个组件标记为“安全”,会将安全实施的责任推给开发团队。

默认情况下,Bin 目录及其内容分配了最低代码访问安全权限。你应仔细测试 Web 部件,以确定要分配的正确权限级别,并确保 Web 部件不会对你的环境造成安全风险。

您可以使用以下两种方式之一提升权限:

  • (推荐)创建信任策略文件,并在新文件中指向 Web.config 文件。虽然此选项更复杂,但可以为 Web 部件精确设置权限。有关信任策略文件的详细信息,请参阅 Microsoft Windows SharePoint Services and Code Access Security(Microsoft Windows SharePoint 服务和代码访问安全性)。

  • 提升 Bin 目录的整体信任级别。在 Web 应用程序根目录下的 Web.config 文件中,找到 trust 元素。trust 元素的 level 属性的默认值为 WSS_Minimal。您可以将此级别更改为 WSS_Medium。尽管此选项更简单,但它会向库授予您可能不需要的新权限,因此安全性比创建信任策略文件要低。

    警告

    Web.config 文件中的 WSS_MinimalWSS_Medium 条目区分大小写。

安全控件列表

安全控件列表包含特定于你的 SharePoint 站点的控件和 Web 部件的名称,服务器管理员可将其指定为安全,以用于站点中的任何 .aspx 页面。此列表是 Web 应用程序根目录中的 Web.config 文件的一部分。

部署和配置 Web 部件

你用于部署新的 Web 部件的方法取决于开发人员提供的成品程序包。如果开发人员将 Web 部件作为单个动态链接库 (DLL) 文件提供给你,你可能需要将 DLL 复制到 Web 应用程序的 Bin 文件夹中来手动部署。如果开发人员向你提供包含 Web 部件的 CAB 文件,则你可以使用 Microsoft PowerShell 部署 Web 部件。

手动部署和配置 Web 部件的具体步骤

  1. 验证您是否拥有以下管理凭据:

    • 必须是托管 SharePoint Server 的服务器上本地管理员组的成员。
  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 文件,一种替代方法是使用 PowerShell 安装 Web 部件程序包。要执行此过程,开发人员或系统管理员必须为 Web 部件创建一个 CAB 解决方案程序包。创建 CAB 文件后,按照这些步骤部署 Web 部件。

使用 Microsoft PowerShell 部署 Web 部件的具体步骤

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

  2. 打开 SharePoint 命令行管理程序。

  3. 在 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 网站。

See also

在 SharePoint Server 中管理 Web 部件

如何:在远程服务器上部署、发布和升级 SharePoint 解决方案