匿名用户无法从文档库打开 XLSX 文件

症状

请考虑以下情况:

  • 发布网站或启用了“ViewFormPagesLockDown”功能的网站
  • 站点配置为进行匿名访问
  • 网站包含文档库
  • 文档库包含扩展名 .XLSX (Excel 2007 或更高版本的文件)
  • 匿名用户双击 .XLSX 将其打开

Sharepoint 尝试使用 XL Web 服务打开文件。 用户看到消息“操作正在进行”,然后收到以下错误:

Excel Web Access 发生错误。
访问被拒绝

原因

匿名用户对文档库没有“OpenItems”权限。

解决方案

可以实施三种不同的解决方法来解决此问题。

解决方法 1

中断对文档库的权限继承。

解决方法 2

注意

禁用“ViewFormPagesLockDown”功能可让匿名用户拥有对某些可能包含敏感信息的文件的源权限。

使用 stsadm 在网站集上禁用“ViewFormPagesLockDown”功能:

stsadm -o deactivatefeature -url <site collection url> -filename ViewFormPagesLockDown\feature.xml

解决方法 3

注意

通过授予匿名“OpenItems”权限,匿名用户可以查看某些可能包含敏感信息的文件的源权限。

以编程方式向匿名用户授予 SPWeb 的“OpenItems”权限。 请注意,只有在了解 & 接受安全隐患时,才应执行此操作。 以下示例脚本可用于添加“打开项”权限:

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")  

$siteUrl = "[http://URL_of_your_SITE](http://url_of_your_site/)";  
$site = New-Object Microsoft.SharePoint.SPSite($siteurl);  
$web = $site.OpenWeb();  

$enumPerms = [Microsoft.SharePoint.SPBasePermissions];  

Write-Host $web.AnonymousPermMask64;  
$web.AnonymousPermMask64 = $web.AnonymousPermMask64 -bor $enumPerms::OpenItems  
$web.Update();  
Write-Host $web.AnonymousPermMask64;  

$web.Dispose();  
$site.Dispose();  

更多信息

规划外部匿名访问环境的安全性 (Office SharePoint Server)

仍然需要帮助? 请转到 SharePoint 社区