【发布时间】:2015-09-22 14:06:17
【问题描述】:
是的,这让我疯了。这在本地使用 Excel 2013 可以正常工作,但是当使用 Excel 2010 将网站发布到远程服务器时,它会失败。从我可以看到 DCOM 配置在本地与远程相同。
在与 Excel 2010 和 DCOM 权限斗争了一个多小时后,我得到的最好的结果就是这个例外:System.Runtime.InteropServices.COMException (0x80070BBC): Office has detected a problem with this file. To help protect your computer this file cannot be opened.
这是 Web 应用程序试图从刚刚上传到的位置打开 *.xls 文件的结果。应用程序池在ApplicationPoolIdentity 下运行,我已在Launch and Activation Permissions 上的mmc -32 下设置此特定应用程序池的权限,因此运行Excel 没有问题。我认为我在这里面临的是保护模式问题,因为文件绝对没有损坏。
我已进入 Excel 和信任中心设置,并将 *.xls 文件上传到(并随后打开)的位置添加为受信任位置。如果我在托管服务器上打开文件(在我的域帐户下),我不会在文件上获得受保护的视图块 - 但是,DCOM 配置上的 Identity 设置为启动用户。那么,从以下内容(或我未列出的内容)来看,这是什么意思:
- 我需要在组策略级别将此位置添加为受信任位置,因为启动实际应用程序的帐户在其配置文件中没有此配置?
- 我需要在服务器上创建一个实际的帐户,并使用这个帐户作为运行应用程序的身份吗?
- ... ?
只是为了澄清我已经在 DCOM 安全配置路线上遇到了 C:\Windows\System32\config\systemprofile\Desktop 和 C:\Windows\SysWOW64\config\systemprofile\Desktop 的荒谬问题。配置是:
- .NET 4.5(经典管道)应用程序池在 ApplicationPoolIdentity 下运行
- DCOM Config > Security > Launch and Activation Permissions all set for this specific identity (Access Permissions and Configuration Permissions all set to Use Default)
- 文件已正确上传并显示在目标位置,在服务器本身上打开(在我的域帐户下)尊重受信任的位置并且不会发出保护模式警告
- 解析过程失败,出现上述异常。
如果相关的话,这是我正在使用的 Interop 程序集的屏幕截图。
【问题讨论】:
标签: excel-interop