2015-10-15 47 views
0

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

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

这是导致错误的行:

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

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

但这没有帮助。一些文章说选择“Microsoft Excel应用程序”。但是,我只在我的DCOM配置中看到“Microsoft Excel预览器”。

Excel安装在此服务器上,但仍存在上述问题。

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

我需要做些什么来解决这个问题?

+0

你检查IIS池用户的属性,有关负载完整的个人资料,等等? – Caveman

+0

我将App Pool'Load User Profile'更改为True,这是False。重新启动应用程序池,但我们仍然遇到错误。 – Jerry

回答

1

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

这就是说,以前走了这条路,这是一个不好的解决方案。是你要面对的挑战如下:

  • 问题与DCOM权限是难以诊断和解决(你正在运行到现在这样)
  • Excel的进程可以催生了服务器上,一半的时间因此您的应用程序必须足够聪明才能杀死错误的Excel进程,或者事实上您的应用程序会像疯狂一样泄漏内存
  • 它不受Microsoft支持或推荐
  • 办公室的设计并没有考虑服务器端的安全考虑因素

更多详情参见以下内容:

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

相关问题