C# 代码在开发服务器上运行,但不在IIS上运行

C# 代码在开发服务器上运行,但不在IIS上运行,c#,asp.net,excel,iis,iis-7.5,C#,Asp.net,Excel,Iis,Iis 7.5,我有一个web应用程序,其中用户运行查询(通过web界面)并以excel格式获得输出。有时,此输出包含超过300k条记录。用户需要这些数据进行进一步研究 现在,为了使用如此大的数据量加速动态excel创建,我们正在使用“Microsoft.Office.Interop.excel”COM对象 我们的代码在内置的asp.net开发服务器上运行完全正常。但是,当托管在IIS上时,它会给出“访问被拒绝”错误(确切错误如下所示) 由于以下错误,检索CLSID为{00024500-0000-0000-C0

我有一个web应用程序,其中用户运行查询(通过web界面)并以excel格式获得输出。有时,此输出包含超过300k条记录。用户需要这些数据进行进一步研究

现在,为了使用如此大的数据量加速动态excel创建,我们正在使用“Microsoft.Office.Interop.excel”COM对象

我们的代码在内置的asp.net开发服务器上运行完全正常。但是,当托管在IIS上时,它会给出“访问被拒绝”错误(确切错误如下所示)

由于以下错误,检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败:80070005访问被拒绝。(来自HRESULT的异常:0x80070005(E_ACCESSDENIED))

我已将所有权限授予IIS用户,但这仍然不起作用。 我试过Windows Server 2012 R2和Windows 7操作系统,但这两种操作系统都不起作用

我已经对“DCOMCNFG”进行了更改,并在“COM安全性”选项卡下授予web用户访问权限


我可以采取哪些额外步骤来实现这一目标?

请查看以下链接-


这是一个COM权限问题

开始
运行
dcomcnfg

导航到组件服务
计算机
我的计算机
DCOM配置

找到Microsoft Excel应用程序的

右键单击
属性

在安全选项卡上:选择启动和激活权限下的
security
,然后单击
Edit…

添加站点运行所使用的帐户(例如:网络服务),并分配本地启动和本地激活权限


此外,还应启用ASP.NET身份验证。

我认为要使其正常工作,必须在服务器上安装office。 因此,如果不是这样,请在服务器上安装Office。
(另一种选择是使用OpenXml)

我决定放弃在服务器上使用COM对象进行Excel操作。相反,我决定使用SDK生成Excel文件。这在服务器上不需要任何额外的安全权限要求即可工作。

这可能与文件系统文件夹中的权限有关吗?我已授予此项目所在的整个文件夹的完全写入权限。您是否将IIS中的应用程序池用户包括在该权限列表中?@Dryadwoods,是的,我有。此外,我还将应用程序池标识修改为“本地系统”。按照此步骤添加了网络服务以及/用户权限。由于未知的原因,它仍然不能工作。您的站点运行在哪个用户下?我通过显式添加用户名和密码为站点提供了“管理员”权限。哪个用户(帐户)?(你可以在应用程序池中找到他)我试过“特定用户”和“应用程序用户”