检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败的解决方案
工作过程中,需要在后台C#中操作Excel,编程调试时没有问题,但是发布后出现以下错误:
错误信息:检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误:80070005 拒绝访问。 (异常来自HRESULT:0x80070005 (E_ACCESSDENIED))。
网上虽然已经有许多人写了解决方案,但是说的并不全面,只是在特定情况下生效,本文给出使用多种情况的解决方案,相信能为您解决问题。
错误原因:网站应用程序未获得启动激活以及访问服务器上Excel程序的权限
【解决方案步骤】
1.首先确定服务器上安装了Office的Excel软件(并确认安装版本)
2.在【开始】--->【运行】中输入:
若为office2003或office2007(即32位程序)输入【comexp.msc -32】或【comexp.msc】(这个主要是64位系统的问题,excel是32位的组件,所以在正常的系统组件服务里是看不到的,可以通过在运行里面输入 comexp.msc -32 来打开32位的组件服务,在里就能看到excel组件了)
若为office2010及以上,输入【dcomcnfg.exe】
并回车来启动"组件服务"
3.依次双击【组件服务】-->【计算机】-->【我的电脑】->【DCOM配置】
4.在【DCOM配置】中找到“Microsoft Excel 应用程序”或“Microsoft Excel Application”,选中单击鼠标右键,然后点击“属性”,弹出“Microsoft Excel 应用程序属性”(或“Microsoft Excel Application 属性”)对话框
5.点击【标识】标签,选择【交互式用户】
6.点击【安全】标签,在【启动和激活权限】下点击【自定义】然后点击对应的【编辑】按钮,在弹出的【安全性】对话框中填加两个用户:
“NETWORKSERVICE”用户和“IIS_IUSRS”用户(注意要选择本计算机名),并给它赋予“本地启动”和“本地激活”权限,并确定。
7.仍然是【安全】标签下,在【访问权限】下点击【自定义】然后点击对应的【编辑】按钮,添加“NETWORKSERVICE”用户和“IIS_IUSRS”用户,并赋予“本地访问”权限
8.至此,问题应该已经解决,若没有解决
在【开始】--->【运行】中分别输入“comexp.msc ” “dcomcnfg.exe”
分别进行上述配置,然后尝试。
***************************************************************************************************
如果上述方法不能解决问题 ,请尝试用下面的方法
在web.config中使用身份模拟,在节中加入 <identity impersonate="true" username="你的用户名" password="密码" >