ASP.NET Core实例化第三方COM组件报80040154类未注册错误
解决ASP.NET Core中32位COM组件"80040154 Class not registered"错误
匹配项目运行平台
你的COM组件是32位,ASP.NET Core默认可能跑在64位环境下,导致找不到注册信息:- 右键项目→属性→生成→平台目标选择「x86」
- 调试时,去项目属性的调试页,勾选「启用32位应用程序」(针对IIS Express)
用32位regsvr32重新注册
64位系统里的regsvr32分两个版本,32位DLL必须用SysWOW64下的32位工具注册:
打开管理员身份的命令提示符,执行:C:\Windows\SysWOW64\regsvr32.exe "你的32位DLL完整路径"不要用System32下的64位regsvr32,否则32位进程读不到注册项
调整IIS托管配置(如果用IIS部署)
- 打开IIS管理器,找到你的站点对应的应用程序池
- 右键→高级设置→将「启用32位应用程序」设为「True」
- 确认应用程序池的.NET CLR版本与COM组件依赖的环境匹配
改用Interop直接实例化
既然已经添加了COM引用,直接用生成的Interop类,绕开ProgID可能的匹配问题:using ThirdPartyServer; Widget myWidget = new Widget();若仍报错,检查Interop程序集的平台:右键依赖项里的
Interop.ThirdPartyServer→属性,确认「平台目标」为x86先验证组件本身可用性
新建一个32位的.NET Framework控制台项目,添加相同的COM引用并实例化类。如果能正常运行,说明问题出在ASP.NET Core的宿主配置上,而非组件本身
内容的提问来源于stack exchange,提问作者SiBrit
相关产品推荐
相关产品推荐

