检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 【网站客户端无法读取服务器本机上的Excel】

问题描述:.NET无法读取excel

现象:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

原因: web上传到服务器,然后读取excel时,服务器端会存在c#是否有权限使用excel com组件的问题!

具体解决方法如下:

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应

用程序属性"对话框

5:点击"标识"标签,选择"交互式用户"

6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中添加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也添加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.这样,我们便配置好了相应的Excel的DCOM权限.

注意:这是在WIN2003上配置的,在2000,xp上,是配置ASPNET用户

由于EXCEL是在服务器上打开的,所以应该写一个把导出数据保存在服务器上,然后再传递给客户端的方法,最后每次调

用这个功能的时候再删除以前在服务器上所生成的所有Excel

=================================================

解决方法二:

如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:

在web.config中使用身份模拟,在<system.web>节中加入   <identity impersonate="true" userName="你的用户名" password="密码"/></system.web>

=================================================

前两天在VS2008下做个项目,用到了excel组件没有问题,但当把该项目在IIS下配置后,用浏览器浏览结果则不正确,网上说用dcom组件配置下,可是我按照要求配了,结果还是不对。

后来找到一个方法好用了。

Web.config中加了一句话:“<identity impersonate="true" userName="操作系统用户" password="用户密码"/>”,浏览…,结果正确,后来我就在网上查了下这句话的作用,MSDN是这样说的:
1、模拟 IIS 验证的帐户或用户

若要在收到 ASP.NET 应用程序中每个页的每个请求时模拟 Microsoft Internet 信息服务 (IIS) 身份验证用户,必须在此应用程序的 Web.config 文件中包含 <identity> 标记,并将 impersonate 属性设置为 true

2、为 ASP.NET 应用程序的所有请求模拟特定用户 若要为 ASP.NET 应用程序的所有页面上的所有请求模拟特定用户,可以在该应用程序的 Web.config 文件的 <identity> 标记中指定 userName 和 password 属性。例如:
<identity impersonate="true" userName="accountname" password="password" />

个人验证:最终法1无法解决问题,法2可用 -- 新增一个用户,放在administrator用户组(具有服务器所有权限)即解决问题;隐患就是该用户权限过大,对与网站安全有危险。

转载自http://helloouc.blog.163.com/blog/static/5530527120091445046478/ 以及http://blog.sina.com.cn/s/blog_4c6e822d0100hz3m.html,非常感谢。

时间: 2024-10-11 17:48:10

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005 【网站客户端无法读取服务器本机上的Excel】的相关文章

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

检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA0060263B} 的组件时失败,原因是出现以下错误: 80070005 在CSDN上总是有网友问这个问题,自己也遇到过,因些写出来供参考: 症状: oWordApplic = New Word.Application 当程序运行到这句时出现下面的错误: 检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA0060263B} 的组件时失败,原因是出现以下

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

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失 败,原因是出现以下错误: 80040154 折腾了N个小时的问题,最终是通过这个ID去搜索未报错的机器的注册表,导出,再导入到报错的机器上,问题得到解决.原来是开发文档提示注册的ocx有误. 其他:只有服务器上安装了office序列才可以调用office的东西 其他问题相关: http://zhidao.baidu.com/question/532301026.htm

检索 COM 类工厂中 CLSID 为 {{10020200-E260-11CF-AE68-00AA004A34D5}} 的组件时失败解决办法

检索 COM 类工厂中 CLSID 为 {10020200-E260-11CF-AE68-00AA004A34D5} 的组件时失败,解决方法如下: 第一步:首先将msvcr71.dll,  SQLDMO.DLL, Resources/2052/sqldmo.rll,Resources/1033/sqldmo.rll 拷贝到C:/Program Files/Microsoft SQL Server/80/Tools/Binn目录. 下载SQLDMO文件 第二步:打开开始,在运行中输入 regsvr

(Excel导出失败)检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失

在DCOM 中不存在WORD.EXCEL等OFFICE组件 最近在做一个关于office转存PDF的Web项目.开发过程一切顺利. 起初在网上找到一些Word,PPT转PDF的代码.很好用.一切顺利项目开发成功.在这里需要说明一点,PPT中会存在流媒体内容,如果存在这些内容的时候是不能成功转换为PDF的.需要手动将相关内容删除后才可以转换.各位如果遇到些奇怪的问题的时候,希望检查下PPT中是不是存在这些内容. 项目开发结束,问题就来了.因为需要搭建测试环境.就拿手边一台防止的机器搭建了测试环境.

Project下载提示检索 COM 类工厂中 CLSID 为 {36D27C48-A1E8-11D3-BA55-00C04F72F325} 的组件失败

做后台系统导出Project时,部署到服务器提示:检索 COM 类工厂中 CLSID 为 {36D27C48-A1E8-11D3-BA55-00C04F72F325} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程.请检查用户名和密码. (异常来自 HRESULT:0x8000401A).本地测试没有问题,经过网上查询解决如下, 1:在服务器上安装office的Project软件.2:在"开始"->"运行"中输入

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

检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败 在项目中将数据导出为Excel格式时出现“检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005”,从网上搜了一下有如下解决方案: 1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnf

检索 COM 类工厂中 CLSID 为 {5374EC4C-1AA2-4829-A811-DE624ECEC23F} 的组件时失败,原因是出现以下错误: 80040154。

1.开发环境: win7 64位,vs2008,AE9.3 控制台程序 new方法失效报出的错误. 2.出现问题: 检索 COM 类工厂中 CLSID 为 {5374EC4C-1AA2-4829-A811-DE624ECEC23F} 的组件时失败,原因是出现以下错误: 80040154. 3.解决方案:将工程的属性中生成选项的目标平台设置为x86就可以了.

检索 COM 类工厂中 CLSID 为 {96749377-3391-11D2-9EE3-00C04F797396} 的组件失败,异常0x80040154,没有注册类问题分析和解决办法

问题分析和解决 //阅读函数 private void Read(string text) { SpVoice sp = new SpVoice();//报错位置 sp.Rate = GetSpeedSelected(); SpeechVoiceSpeakFlags sFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync; sp.Speak(text, sFlags); } 报错信息: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾.

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

http://blog.csdn.net/yiyiwyy326/archive/2007/04/30/1592657.aspx [C#]用C#动态生成Word文档之服务器配置Server 2003 收藏 用C#动态生成Word文档功能实现了,在本地的机器运行时是好的,但安装到远程服务器上就报错了,让我头疼了好久,看了很多的信息后,现在才算是搞定了. 为了不忘记特意再此做下记录来! 程序安装到远程服务器上,首先报的错误代码就是80070005(检索COM类工厂中CLSID为{000209FF-00