检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

当在ASP.NET应用程序中引用Microsoft Excel组件,并在程序中调用时,部署到服务器上经常会遇到以下的错误:
检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

问题的原因是Microsoft Excel作为一个COM组件默认只能被以下帐户激活:

  • Administrator
  • System
  • Interactive

而当你访问的ASP.NET应用程序实际是以ASP.NET或Network Service群组帐户执行的。
解决问题的方法就是使用具有权限的帐号去执行ASP.NET应用程序,一般方法有两种:
1、第一种方法比较简单,只要为ASP.NET应用程序专门分配一个帐户,并保证该帐户在本地登陆时能正常的使用MICROSOFT Excel,然后在web.config文件的<system.web>节下加上以下设置,就能使程序能正常运行。
    <identity impersonate ="true" userName="账号" password="密码"/>

2、第二种方法就是要配置DCOM,使ASP.NET帐号能有权限调用Excel COM组件,下面分不同的系统说明配置方法。

  • 选择开始菜单->执行
  • 输入"dcomcnfg"并按回车键
  • 这时会看到“元件服务"MMC界面(也可通过 控制面板->系统管理工具->元件服务进入)
  • 展开到 元件服务->电脑->我的电脑->DCOM设定
  • 右键""Microsoft Excel Application"并选择 属性,进入属性设定界面
  • 选择如下的“安全性(Security)”设定选项卡

  • 在“启动和启用权限(Launch and Activation Permissions)"中选择"自订(Customize)"
  • 按右边的“编辑(Edit)",可看到如下画面

WINDOWS XP

                                                  
                    
                    WINDOWS 2003

  • 点击"新增(add)"如下界面
  • 点击"位置(Locations)"选择本地计算机,如下面的"CCROWE"


  • 如果是Windows XP,在下面的对话框中输入"ASPNET"帐号名称,如果是Windows 2003 Server,必须要输入应用程序池(Application Pool)的运行帐号,默认是"Network Service"

WINDOWS XP

注意:最快捷的方式是直接输入电脑名称和帐号像如下格式:CCROWE\ASPNET

                            WINDOWS 2003 SERVER

  • 按"确定(OK)"
  • 确保所选择的帐号(window xp是ASPNET,windows 2003 server是应用程序池的标识帐号,默认为network service)选上了以下权限:

   本地启动(local launch) : 允许(allow)
             远端启动(Remote launch) : 空白(blank)
            本机启用(Local Activation) : 允许(allow)
             远端启用(Remote Activation) : 空白(blank)

设定后如下所示:
                        WINDOWS XP                                                  
   
                WINDOWS 2003 SERVER

  • 按下"确定(OK)",看看现在你的web应用程序是否能工作正常了^^

注意:如果你是部署到windows 2003 server上,必须添加设定应用程序池(Application pool)的标识帐号而不是ASPNET帐号

解决方案: 配置 DCOM 中 word 应用程序:
在window server 2003下设置 Office 自动化服务器,请按照下列步骤操作:
1. 以管理员身份登录到计算机,安装Office2003。
2. 启动要自动运行的 Office 应用程序。这会强制该应用程序进行自我注册。
3. 单击开始,单击运行,然后键入 DCOMCNFG。选择要自动运行的应用程序。应用程序名称如下所示:
Microsoft Word 文档
单击属性打开此应用程序的属性对话框
4. 单击标识选项卡,然后选择交互式用户。
5. 在 DCOM 配置对话框中,单击默认安全性选项卡。
6. 单击"启动和激活权限"和访问权限的"自定义"。验证访问权限中是否列出下列用户,如果没有列出,

则添加这些用户:
SYSTEM
INTERACTIVE
Administrators
IUSR_<machinename>*
IWAM_<machinename>*
NETWORK SERVICE
后三个需要添加"本地激活"权限.
7. 单击确定关闭 DCOMCNFG。

1,增加虚拟权限:

在web.config里面增加

<identity impersonate="true" userName="windowsloginid" password="password"/>的键值;要求windowsloginid具有管理员权限,这种方案使用后确实可行,可是不利于部署,因为有经验的人都知道把一个最高权限的服务器帐号密码公开显示在配置文件上有什么后果。所以这种方案不可行。那么就牵涉到第二种方案。

2,增加Com组件的交互式访问权限:

这也是网上搜索率最高的一种方式,运行“DCOMCNFG”,找到

Microsoft Excel 97/2000/2002 - Microsoft Excel 应用程序
Microsoft Word 2000/2002 - Microsoft Word 文档  这些组件的交互式访问权限,详情可以参见:

http://support.microsoft.com/kb/288366

这种方案应该是可行的,可是我在我自己的机器上一级服务器上试验过很多遍都不行,最后我试着用特定的用户来访问,如果细分的话,这里可以算为第三种解决方案了^_^

3,增加Com组件特定用户的访问权限。

这才是我今天说的重点,也是帮我解决了实际难题的一重解决方案,简略的说可以这么做:

建立一个所需的帐号(例如test),权限为Power User或者User;

用此帐号运行一次word或者excel(确保有访问权限);

运行DCOMCNFG,在Dcom组件里面找到Microsoft Excel 应用程序或者Microsoft Word 文档(和前面一样)-属性-标识里面选择“特定用户”,然后输入前面建立的帐号和密码就可以了

请确认server服务已经启动

检索COM 类工厂中CLSID 为{00024500-0000-0000-C000-000000000046}组件时失败的更多相关文章

  1. "检索COM类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005" 问题的解决

    一.故障环境 Windows 2008 .net 3.0 二.故障描述 ​ 调用excel组件生成excel文档时页面报错.报错内容一大串,核心是"检索COM类工厂中 CLSID为 {000 ...

  2. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 在CSDN上总是有网友问这个 ...

  3. [备忘]检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA0060263B} 的组件时失败解决方法

    检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA0060263B} 的组件时失败,原因是出现以下错误: 80070005 在CSDN上总是有网友问这个 ...

  4. 检索 COM 类工厂中 CLSID 解决办法

    我的服务器:windows server 2008(64位)+microsoft office 2007 企业版+windows服务应用程序 业务:调用msdn提供的SaveAsPDFandXPS.e ...

  5. 解决Office互操作错误"检索COML类工厂中 CLSID为 {xxx}的组件时失败,原因是出现以下错误: 80070005"

    Excel为例(其他如Word也适用)文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是 ...

  6. 检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

    检索 COM 类工厂中 CLSID 为 {820280E0-8ADA-4582-A1D9-960A83CE8BB5} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRE ...

  7. 【原创】asp.net导出word 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a

    我的服务器:windows server 2008(64位)+microsoft office 2007 企业版 业务:网站导出应聘word简历. 出现以下错误: 检索 COM 类工厂中 CLSID ...

  8. C#操作word或excel及水晶报表,检索 COM 类工厂中 CLSID 为 {} 的组件时失败,原因是出现以下错误: 80070005

    解决办法一:<转自http://www.cnblogs.com/Sue_/articles/2123372.html> 具体解决方法如下: 1:在服务器上安装office的Excel软件. ...

  9. (原创)解决Excel 互操作错误"检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005"

    最近在.net中处理Excel文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下 ...

  10. 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败

    .NET导出Excel遇到的80070005错误的解决方法: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出 ...

随机推荐

  1. 【bzoj2038】[2009国家集训队]小Z的袜子(hose) 莫队算法

    原文地址:http://www.cnblogs.com/GXZlegend/p/6803860.html 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终 ...

  2. Arcgis桌面开发,Python引用GDAL库的方法

    我用的是arcgis10.2,python版本是arcgis自动安装的Pythin2.7 1.下载gdal-111-1700-core.msi和对应的GDAL-1.11.1.win32-py2.7.m ...

  3. 如何得到一个接口所有的实现类(及子接口)?例如:Eclipse IDE

    (一)Eclipse IDE的做法 它会解析所有的Java文件.Class文件. 技巧:在Eclipse中,选中Interface,按下F4,就可以查看到所有的实现类及子接口. 例如: (二)自己怎么 ...

  4. Chromium源码获取与编译

    http://blog.csdn.net/glunoy/article/details/23591047 http://blog.sina.com.cn/s/blog_48f93b530101ergp ...

  5. DP———2.最大m子序列和

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. maven打包源码

    1. 打包 main 目录代码到 jar 归档文件 mvn source:jar 2. 打包 test 目录代码到 jar 归档文件 mvn source:test-jar

  7. Git的优点

    没有网络时也可以使用版本控制系统,这点svn做不到,如果你一直有网络,这个可以忽略: git由于所有版本都在本地的.git目录数据库中,因此它可以用指针随时改变指向,指向不同的版本,把它作为最新的he ...

  8. 浅谈_IDEA导入Eclipse的Web项目

    相信很多同学在工作中都会遇到将一个Eclipse的Web项目导入IDEA的情景,这里浅谈一下具体的操作流程 一:Import Project,选择要导入的项目 二:选择以Eclipse模型的方式导入 ...

  9. Android键盘面板冲突 布局闪动处理方案

    转:来自Android键盘面板冲突 布局闪动处理方案 起源,之前在微信工作的时候,为了给用户带来更好的基础体验,做了很多尝试,踩了很多输入法的坑,特别是动态调整键盘高度,二级页面是透明背景,魅族早期的 ...

  10. win7 iis 7.0 碰到 503错误,找到的解决方案

    Service Unavailable HTTP Error 503. The service is unavailable. 今天要布署一个网站,在自己的电脑上,结果碰到服务器503错误,找应用程序 ...