iis7报错 检索 COM 类工厂中 CLSID 为 {EA31C914-2E47-4C35-AA94-84672EA01B36} 的组件失败,原因是出现以下错误: 80040154

本文探讨了在执行Web请求期间遇到的COMException异常,详细解释了错误原因及解决方法,重点关注了在调试模式下进行编译的重要性,并提供了配置步骤以启用调试模式。同时,文章还指出了在配置IIS时遇到的问题以及如何解决此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

跟研发调试网站浏览,报错

检索 COM 类工厂中 CLSID 为 {EA31C914-2E47-4C35-AA94-84672EA01B36} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 检索 COM 类工厂中 CLSID 为 {EA31C914-2E47-4C35-AA94-84672EA01B36} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。

源错误:

只有在调试模式下进行编译时,生成此未经处理的异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL:

1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如:

  <%@ Page Language="C#" Debug="true" %>

或:

2. 将以下的节添加到应用程序的配置文件中:

<configuration>
   <system.web>
       <compilation debug="true"/>
   </system.web>
</configuration>

请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。

重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。 

堆栈跟踪:


[COMException (0x80040154): 检索 COM 类工厂中 CLSID 为 {EA31C914-2E47-4C35-AA94-84672EA01B36} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。]
   Discuz.ForumPage.login.ShowPage() +1033
   Discuz.Web.UI.Pages.BasePage..ctor() +4448
   Discuz.ForumPage.login..ctor() +40
   __ASP.FastObjectFactory_app_web_3ffvz2no.Create_ASP_aspx_1_login_aspx() +29
   System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +174
   System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +42
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +549
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +193
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371

 

在网上搜了半天,都是说某个dll没有注册,最后发现我又没有某个dll是32位,系统是64的iis7,在配置apppool,启用32位支持,如图

### 关于 COM 工厂 CLSID {00024500-0000-0000-C000-000000000046} 导出组件错误的方法 当遇到“检索COM工厂CLSID为{00024500-0000-0000-C000-000000000046}的组件失败”的错误提示,通常意味着存在权限配置问题或 DCOM 配置不当的情况。以下是几种可能的原因及其对应的解决方案: #### 权限不足 该错误可能是由于当前用户缺乏足够的权限来启动和激活 Excel 应用程序对象所致。为了修正此问题,可以尝试调整 Windows 中 Microsoft Excel 应用程序的安全设置。 对于 32位系统,在命令行工具中输入 `dcomcnfg` 打开组件服务管理器;而对于 64位操作系统,则需通过路径 `%windir%\SysWOW64\dcomcnfg.exe` 启动相同的应用程序[^1]。导航到控制台树中的 "我的电脑" -> "DCOM Config" 并找到 "Microsoft Excel Application". 右键点击该项并选择属性选项卡下的安全标签页。在这里修改 “启动和激活权限” 和 “访问权限”。确保 Local Launch, Remote Launch, Local Activation 和 Remote Activation 复选框都已勾选,并且将所需的账户添加至列表内赋予相应的权限。 #### 缺少必要的身份验证级别 另一个潜在原因在于 DCOM 身份验证级别的设定过低。同样是在上述提到的位置下,切换到“Identity”页面确认选择了“Interactive User”。 此外,“General” 页面里的 Authentication Level 下拉菜单应设为至少 Packet 或更高水平以增强安全性的同时允许远程过程调用正常工作[^2]。 #### 安装缺失的数据访问组件 有时即使解决了前面两个方面的问题之后仍然会遭遇其他型的异常情况比如:“未在本地计算机上注册 'microsoft.ACE.oledb.12.0' 提供程序”。这是因为缺少了特定版本的数据连接库文件 (Access Database Engine),可以通过前往微软官方网站下载最新版 AccessDatabaseEngine_X64.exe 进行安装从而解决问题[^3]。 ```powershell # 使用 PowerShell 修改 DCOM 设置示例脚本 Set-PSSessionConfiguration -Name Default -ShowSecurityDescriptorUI $DComConfigPath = "HKLM:\Software\Microsoft\OLE" New-Value 1 -Force ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值