在 SharePoint Foundation 中部署 Web 部件

上次修改时间: 2015年3月9日

适用范围: SharePoint Foundation 2010

本文内容
部署注意事项
安全权限注意事项
对 Web 部件程序集进行强命名
创建 SafeControl 项
创建 .Webpart 文件

Microsoft SharePoint Foundation 要求先将 Web 部件部署到 Web 部件库中,然后才能将其添加到网页中。本节介绍 bin 文件夹与全局程序集缓存 (GAC) 之间的差异、安全权限注意事项、如何对程序集进行强命名以便部署、如何创建 SafeControl 项以及如何创建 Web 部件定义文件以部署 Web 部件。

部署注意事项

在 SharePoint 网站内,可以将 Web 部件程序集部署到多个位置。

  • 解决方案库 – 解决方案库是使用沙盒解决方案部署 Web 部件时的建议位置。默认情况下,它为 Web 部件提供监视和安全性。有关沙盒解决方案的详细信息,请参阅沙盒解决方案

  • bin 目录 — bin 目录是一个存储在 Web 应用程序根目录下的文件夹。在 Internet Information Services (IIS) 中创建网站时将确定此文件夹的位置。在 SharePoint Foundation 中,可以通过管理中心网站或通过在 IIS 管理器中手动创建新网站来实现此目的。

    重要注释重要信息

    如果 bin 目录不存在,您必须手动添加一个 bin 目录。请不要在本地 _app_bin 目录中存储 Web 部件,此目录是专为 Microsoft 保留的。

    有关详细信息,请参阅如何:查找 Web 应用程序根目录

  • 全局程序集缓存 — 可用于部署已签名程序集的全局位置。利用全局程序集缓存,可以跨多个应用程序共享程序集。全局程序集缓存将随 .NET 运行库一起自动安装。通常,组件将存储在 C:\WINNT\Assembly 文件夹中。

每个部署位置都有其优点和缺点,如下表所述。

部署位置

优点

缺点

解决方案库

默认情况下,部署到解决方案库的代码在部分信任模式下运行。解决方案库中的代码还具有资源使用情况监视功能以确保场正常运行。解决方案库是特定于网站集的。

并非 SharePoint Foundation 中的所有对象模型在解决方案库中都可用。

bin 目录

默认情况下,程序集以部分信任的形式运行。从该目录运行的代码具有较低级别的代码访问安全性 (CAS) 权限。由于管理员必须明确提升已向 Web 部件授予的权限以使该部件能够正常运行,因此他们通常更愿意程序集在 bin 目录中通过已知的必需 CAS 权限集运行。

每个 Web 应用程序都有一个 bin 目录。这样,就可以隔离特定 Web 应用程序的代码。

为了使此 Web 部件能够在多个 Web 应用程序中运行,您必须将此 Web 部件部署到全局程序集缓存中。

全局程序集缓存

默认情况下,程序集以完全信任的形式运行。由于对程序集进行了全局安装,因此程序集将在任何 Web 应用程序中运行。全局程序集缓存可以包含同一程序集的多个版本。

安装到全局程序集缓存的代码通常没有 CAS 限制。

此外,由于对部署到 GAC 的程序集进行了缓存,因此如果重新生成此程序集,则在 SharePoint 网站上不会自动更新此程序集。必须通过重置 Internet Information Services (IIS) 来强制 SharePoint Foundation 重新加载此程序集。

安全权限注意事项

默认情况下,bin 目录的代码访问安全性权限较低;只允许纯执行。在大多数情况下(例如,在您的 Web 部件需要访问 SharePoint 对象模型时),您必须提升这些权限以使程序集能够正常运行。

有两种提升权限的方法:

  • 建议的方法 — 创建一个新的信任策略文件,并将 web.config 文件指向此新文件。尽管该方法比较复杂,但它可以为您提供针对 Web 部件的准确权限属性。

    有关信任策略文件的详细信息,请参阅保护 SharePoint Foundation 中的 Web 部件

  • 可选方法 — 提升 bin 目录的信任级别。在 Web 应用程序根目录下的 web.config 文件中,有一个名为 <trust> 的标记,它具有默认属性 level="WSS_Minimal"。可以将此级别更改为 WSS_Medium。尽管此方法比较简单,但它会授予您可能不需要的任意新权限,并且此方法与创建新的信任策略文件相比,安全性要低一些。

对 Web 部件程序集进行强命名

强命名将使用私钥对程序集进行数字签名。另外,强命名还使用公钥为程序集添加标记以验证签名。此技术可防止 Web 部件的未经授权的版本。如果公钥无法验证数字签名,则 SharePoint Foundation 将拒绝运行模块。

在将 Web 部件部署到 bin 目录中时,建议的做法是对程序集进行强命名。在将 Web 部件部署到 GAC 时,程序集必须 具有强名称。建议不要在 SharePoint Foundation 中使用不具有强名称的程序集。

若要对程序集进行签名,请使用 Microsoft .NET Framework 软件开发工具包 (SDK) 附带的 sn.exe 工具。有关 .NET Framework SDK 的详细信息,请参阅 SDK、可再发行组件和 Service Pack。此 sn.exe 工具还用于提取在 SafeControls 列表中将控件注册为安全控件时所需的公钥。有关使用 sn.exe 工具的详细信息,请参阅强名称工具 (Sn.exe)(该链接可能指向英文页面)

创建 SafeControl 项

SharePoint Foundation 技术有一个基本假设:不受信任的用户可以在运行 SharePoint Foundation 的系统中上载和创建 ASPX 页。为了防止不受信任的用户在 ASPX 页中任意添加服务器端代码,SharePoint Foundation 提供了一个 SafeControls 列表。

此 SafeControls 列表是一个包含特定于 SharePoint 网站的经批准的控件和 Web 部件的列表,您已将这些控件和 Web 部件指定为安全项目以便在您的网站中的任何 ASPX 页上进行调用。此列表包含在 Web 应用程序根目录中的 web.config 文件中。

SafeControl 项是一个 Web 部件的基于 XML 的声明,其格式如下。

<SafeControl Assembly="AssemblyNameWithoutDLLExtension, Version=AssemblyVersionNumber, Culture=neutral, PublicKeyToken=PublicKeyToken" Namespace="NamespaceOfYourProject" TypeName="*" Safe="True" />

SafeControl 项使用程序集名称、命名空间和版本控制信息;如果已对 SafeControl 项进行签名,则此项还需要一个公钥标记以便验证控件是否安全。如果已对 Web 部件程序集进行签名,则可以使用强名称工具来检索要在 SafeControl 项中使用的公钥标记。下面的命令将检索要用于程序集的公钥标记。

sn -T AssemblyName.dll

创建 .Webpart 文件

Web 部件定义文件是一个简单的 XML 文件,此文件包含单个 Web 部件的属性设置。若要将 Web 部件导入到 Web 部件页中,只需上载 .webpart 文件或将 Web 部件添加到 Web 部件库中即可。上载 Web 部件后,可以通过将此 Web 部件添加到网站页面来显示此 Web 部件。若要在导入 Web 部件后显示此 Web 部件的默认名称和说明,则应在 Web 部件定义文件中包含 Title 和 Description 属性。若要在导入过程中设置其他 Web 部件属性,也可以在 .webpart 文件中定义这些属性。.webpart 文件采用以下格式。

<?xml version="1.0" encoding="utf-8" ?> 
  <webParts>
     <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
       <metaData>
         <type name="TypeName, Version=VersionNumber, Culture=neutral, 
         PublicKeyToken=PublicKeyToken" /> 
         <importErrorMessage>Cannot import this Web 
         Part.</importErrorMessage> 
       </metaData>
       <data>
         <properties>
           <property name="Title" type="string">
              WebPartTitle</property>
           <property name="Description" type="string">
              WebPartDescription
           </property>
         </properties>
       </data>
     </webPart>
   </webParts>

SharePoint Foundation 还支持对 Web 部件使用 .dwp 文件。导出 Web 部件时,可以看到 .dwp 或 .webpart 文件。有关详细信息,请参阅升级 Web 部件

请参阅

任务

演练:创建基本 Web 部件

概念

保护 SharePoint Foundation 中的 Web 部件

升级 Web 部件