IIS无法访问用户的Excel文件,但对我来说没问题。为什么?

时间:2015-02-18 16:07:35

标签: excel office-automation

我在Windows Server 2008 R2中的IIS中有一个作为服务运行的程序。该程序在Excel中创建报表没有问题。当它尝试访问它刚刚创建的Excel时,会发生此问题。这会在这行代码中为用户提供80070005错误:

Excel.Application excelSS = null;
excelSS = new Excel.Application(); <-- Error

因为此时程序尚未尝试访问Excel文件,我认为问题与缺少对文件的访问权限无关。我相信这个问题可能与定位Excel程序有关。这可能与Excel为32位且Windows操作系统为64位这一事实有关。我不确定。

奇怪的是,通过IIS查看Excel报告没有问题。另一个IT人员也没有问题。但普通用户都试图做同样的事情。这都表明该问题与“访问权”相关的概率很高。如果它与Excel的设置有关,我会假设包括我在内的每个人都会遇到同样的问题。这非常令人费解。

我已经尝试过我可以在互联网上找到的所有提示:

  • 确认IIS中的应用程序池使用IIS APPPOOL \ DefaultAppPool用户帐户。

  • 在system32和sys \ systemprofile下的SysWOW64中添加“Desktop”文件夹,并确保IIS APPPOOL \ DefaultAppPool用户帐户具有对这些文件夹的读/写权限。

  • 运行DCOM-Config,并为COM-Security下的IIS APPPOOL \ DefaultAppPool分配本地访问/启动/激活权限。并确保32位和64位DCOM-Config都能获得这些设置。

  • 由于用户使用“Windows身份验证”在IIS中运行程序,我还要确保用户可以使用自己的用户帐户访问存储该服务器的IIS服务器中的文件夹。 Excel文件。

  • 我甚至将IIS APPPOOL \ DefaultAppPool添加到本地管理员用户组。

我无法尝试的唯一提示是我找不到DCOM-Config程序(组件服务 - &gt;计算机 - &gt;我的电脑 - &gt; DCom配置)中列出的“Microsoft Excel应用程序”。我应该将IIS APPPOOL \ DefaultAppPool的启动/激活访问权限添加到该列表中的“Microsoft Excel Application”。但不知何故,“Microsoft Excel应用程序”不在列表中。我试过在System32和SysWOW64文件夹中的DCOM-Config中寻找它。这似乎“似乎”就像问题所在。但我不确定这一点,因为我使用我的用户帐户查看Excel报告没有问题。如果Excel中的设置有问题,我认为我们都不能查看Excel报告。

当我在Windows Server 2003 R2 - 32位或Windows XP 32位中使用该程序时,我没有遇到此问题。

我理解微软希望人们不要在Windows Server 2008中使用Office Automation的问题。微软希望人们使用XML或类似的东西。但我也明白人们已经尝试过这个并且可以解决这个问题。因为我不是该程序的开发人员,所以我真的不想开始更改该程序。因此,我希望能够让现有的程序发挥作用。

请帮忙。提前谢谢。

杰伊陈

1 个答案:

答案 0 :(得分:1)

原来这个问题与访问权限有关。似乎ASP.NET在用户的身份验证下运行(这并不奇怪,因为我已将Web服务设置为使用“Windows身份验证”)。并且用户无权直接在服务器上运行Excel。解决方案是使用特殊的域用户帐户:(1)将特殊用户帐户指定为本地管理员,(2)将特殊用户帐户指定为Web服务的“ASP.NET模拟”的“特定用户”。

我感觉特殊用户帐户以某种方式嵌入到特定的Web服务中。因此,我上面提到的修复可能适用于其他人,也可能不适用于其他人。不幸的是,我不知道这是否属实,因为我不是该Web服务的开发者。而且我在Web服务中找不到任何与该特定用户帐户相关的内容。

我很高兴这是固定的。

杰伊陈