无法在Web服务器上创建XLS文件

时间:2015-10-15 20:43:31

标签: wcf office-interop

我们的Web服务器上有一个WCF应用程序。此应用程序中的一种服务方法创建一个包含数据的Excel XLS文件,并将该文件放在一个目录中,以便用户以后可以下载该文件。

我们的问题是,当此应用程序尝试创建Excel对象时,我们收到此错误:创建Excel帮助程序工作簿和应用程序时出错:检索具有CLSID {00024500-0000-0000-C000-的组件的COM类工厂000000000046} 由于以下错误而失败:8000401a无法启动服务器进程,因为配置的标识不正确。检查用户名和密码。

这是导致错误的行:

使用EX = Microsoft.Office.Interop.Excel; EX.Application Application = new EX.Application(); //导致错误

我做了一些研究,我尝试过的是进入DCOMCNFG - 计算机 - 我的电脑 - DCOM配置和右键单击" Microsoft Excel预览器" - properties - Security,然后添加了几个组和用户以进行本地启动,本地激活等....

但这没有用。一些文章说要选择" Microsoft Excel Application"。但是,我只看到" Microsoft Excel预览器"在我的DCOM配置中。

Excel已安装在此服务器上,但我们仍遇到上述问题。

奇怪的是,如果我远程进入服务器,然后让我的PC上的客户端(浏览器)调用服务方法来创建XLS,这没有问题。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以通过将IIS AppPool标识设置为具有交互式登录权限的用户来尝试执行此操作。互操作程序集实际上是通过在服务器上启动Excel实例然后与之通信来执行工作来工作的。

话虽如此,之前走过这条路,这是一个糟糕的解决方案。您面临的挑战如下:

  • 难以诊断和解决的DCOM权限问题(您现在已经遇到此问题)
  • Excel进程在服务器上生成,有一半时间不能正常关闭,因此您的应用程序必须足够聪明,可以绕过杀死错误的Excel进程,或者生活在您的应用程序将像疯了一样泄漏内存的事实
  • Microsoft
  • 不支持或推荐
  • Office的设计考虑了服务器端安全注意事项

有关其他详细信息,请参阅以下内容:

https://support.microsoft.com/en-us/kb/257757