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

时间:2015-06-11 05:46:01

标签: 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-C000-000000000046}的组件的COM类工厂失败:80070005拒绝访问。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。

我已经授予IIS用户所有权限,但仍然无效。 我尝试过Windows Server 2012 R2以及Windows 7操作系统,但它并不适用于这两种方式。

我已经更改了" DCOMCNFG"并且在" COM安全"下授予对网络用户的访问权限。标签也。

我可以采取哪些额外步骤来完成这项工作?

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这是一个COM权限问题。

Start> Run> dcomcnfg

导航至Component Services> Computers> My Computer> DCOM Config

找到Microsoft Excel Application

Right click> Properties

在安全标签上:选择启动下的SecurityActivation Permissions,然后点击Edit…

添加运行该网站的帐户(例如:网络服务)并指定Local Launch&本地激活权限

Source

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

答案 2 :(得分:0)

我认为要实现这一点,办公室必须安装在服务器上。 因此,如果不是这种情况,请在服务器上安装Office。 (替代方法是使用OpenXml http://www.microsoft.com/en-us/download/details.aspx?id=30425

答案 3 :(得分:0)

我决定放弃在服务器上使用COM对象进行Excel操作。相反,我决定使用EPPlus open office XML SDK生成Excel文件。这在服务器上没有任何额外的安全权限要求的情况下工作。