我刚刚创建了一个简单的应用程序并托管在IIS6.0中。在代码中,我只是实例化excel对象。
using excel = Microsoft.Office.Interop.Excel.Application;
namespace TestHosting
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
excel excelObj=new Microsoft.Office.Interop.Excel.Application();
}
}
}
它给了我下面的错误
"Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied." (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
系统配置:
64位Windows server 2008企业版。 service pack 2
我尝试了在互联网上找到的许多可能的解决方案,但没有一个对我有效。
下面是我尝试过一些解决方案
1)在C:\Windows\SysWOW64\config\systemprofile路径下创建桌面应用程序2)在DCOMCNFG中设置Microsfot.EXcelApplicaiton的完全权限/控制3)杀死任务管理器中的所有excel实例
请在这方面帮助我,这只是一个样本应用程序,但在我的原始应用程序主要是关于读取和写入数据的excel。
发布于 2013-08-02 20:07:08
更好的方法是迁移到Open XML,或者您可以按如下方式进行配置
Com+配置
Properties
App以确保一切正常
3.在DCOM配置中更改Microsoft Excel应用程序的安全设置。
控制面板-->管理工具-->组件服务-->计算机--> myComputer -->DCOM配置--> Microsoft Excel应用程序。
右键单击以获取属性对话框。转到安全选项卡并自定义权限
请看这里的帖子:Error while creating Excel object,Excel manipulations in WCF using COM
发布于 2014-03-13 23:08:36
有时,您创建了新的应用程序池,但无法通过DCOMCNFG解决它。然后还有另一种方法可以做:
将应用程序池的Identity (型号名称)设置为LocalSystem。
我不知道根本原因,但它解决了我的问题一次。
发布于 2016-05-16 11:16:41
太晚了,无法回应。但是,如果这对仍然面临这个问题的人有所帮助。我通过以下方式解决了这个问题:
→将站点设置在专用池上,而不是共享池上。
→支持32位应用程序。
将应用程序池的标识设置为LocalSystem的→。
https://stackoverflow.com/questions/17785063
复制相似问题