我有一个ASP。NET网站,需要使用我们开发的COM接口。当我在visualstudio环境中测试网站时,它运行良好。然而,当我将网站部署到IIS时,我收到一个错误,说明
Retrieving the COM class factory for component with CLSID {0716BE95-6372-46B2-B42D-9FC0ED5E0FE3} failed due to the following error: 80040154 Class not registered
我试过一些东西
- 确保包含类的dll确实已注册。我确保注册表中的条目与错误声明的无法加载的CLSID匹配
- 正在注销dll并使用regsvr32.exe重新注册
- 遵循这个问题中的建议。不过,我尝试使用的类不是一个服务,所以我不确定这个问题与我的问题有多相关
- 遵循这个问题中的建议。同样,我不确定这有多重要,因为这个问题表明这是一个拒绝访问的错误
- 注销并重新注册dll后重新启动计算机
- 按照这个答案中的建议,将我项目的平台目标从
Any CPU
更改为x86
。这导致了另一个问题。Could not load file or assembly 'TestWebSimpleMath' or one of its dependencies. An attempt was made to load a program with an incorrect format.
,我认为这是一个倒退
我运行的是64位Windows 7旗舰版。
任何帮助都会很棒。我已经试着让它工作了将近9个小时,但没有成功。
原因:
您的服务是针对"任何CPU"构建的,这会导致您在使用COM组件的64位上出错。您需要为"x86"构建它。
解决方案:
在Visual Studio中,右键单击项目,然后选择属性。单击BUILD选项卡,然后在平台目标下,将任意CPU更改为X86。
这个问题可能重复
更新:启用32位应用程序
转到IIS->应用程序池->高级设置->启用32位应用程序
检查此相关问题