如何:在 Web 应用程序中使用 SharePoint API 以避免页面验证错误

上次修改时间: 2009年10月1日

适用范围: SharePoint Foundation 2010

SharePoint Foundation 中的 Web 应用程序依据应用程序池标识运行。出于安全原因,当从 Web 应用程序访问 SharePoint Foundation API 时,大多数 API 都将具有限制。因此,这些 API 会引发大量的页面验证错误。若要避免此问题,请更新 Web 应用程序,如下所述。

更新应用程序

若要更新 Web 应用程序以避免出现页面验证错误,请执行下面的步骤:

1. 在 SharePoint 上下文中运行 Web 应用程序

为此,在任意 SharePoint 网站的 _layouts 目录中创建一个虚拟目录,并在该目录下承载 Web 应用程序。

2. 确保合并应用程序池

确保 Web 应用程序在与 SharePoint 管理中心相同的应用程序池下运行。这样可保证通过管理中心应用程序池标识来访问 SharePoint Foundation 管理功能,例如内容部署、用户配置文件管理以及其他功能。

3. 将格式摘要控件添加到 ASPX 页

完成上面的步骤 1 和 2 后,通过 Web 应用程序可以访问大多数 API。但是,某些 SharePoint Foundation API 和功能可能需要更严格的安全验证。如果在实现以上步骤后仍会收到安全验证错误,则必须在 ASPX 页中添加 SharePoint Foundation 格式摘要 Web 控件。当 Web 应用程序尝试访问 SharePoint Foundation API 时,格式摘要控件将对应用程序进行验证。因此,Web 应用程序将被视为安全应用程序并可以访问 SharePoint Foundation。若要使用格式摘要 Web 控件,必须为 SharePoint Foundation 注册一个标记前缀,然后将格式摘要控件添加到 ASPX 页中。

以下代码示例演示如何注册标记前缀:

<%@ Register Tagprefix="SharePoint" 
   Namespace="Microsoft.SharePoint.WebControls" 
   Assembly="Microsoft.SharePoint 
   Version=14.0.0.0
   Culture=neutral, 
   PublicKeyToken=71e9bce111e9429c" %>

现在,可将 SharePoint Foundation 格式摘要控件添加到页面中:

<SharePoint:FormDigest ID="fd" runat="server" PageUri=""/>

必须将格式摘要控件上的 PageURI 属性设置为该控件所在的页面。如果不这样做,您将收到一个空对象引用错误。