使用COM接口将网站部署到IIS时会导致类未注册的错误。
使用COM接口将网站部署到IIS时会导致类未注册的错误。
我有一个ASP.NET网站,需要使用我们开发的COM接口。当我在Visual Studio环境中测试网站时,它可以正常工作。然而,当我部署网站到IIS时,我收到一个错误提示:
“由于以下错误,检索组件的COM类工厂失败:80040154 类未注册。”
我尝试了几个方法:
- 确保包含类的dll确实已注册。我确保了注册表中的条目与错误中提到的CLSID匹配。
- 使用regsvr32.exe取消注册并重新注册dll。
- 按照此问题中的建议操作。然而,我要使用的类不是一个服务,所以我不确定这个问题与我的问题有多大关联。
- 按照此问题中的建议操作。同样,我不确定这个问题与我的问题有多大关联,因为那个问题声明这是一个访问被拒绝的错误。
- 在取消注册和重新注册dll后重新启动我的计算机。
- 按照此回答中建议的将项目的平台目标从“Any CPU”更改为“x86”。这引发了另一个问题:“无法加载文件或程序集'TestWebSimpleMath'或其依赖项之一。尝试加载格式不正确的程序。”我觉得这是一个倒退的步骤。
我使用的是64位的Windows 7 Ultimate版本。
非常感谢任何帮助。我已经花了将近9个小时努力让它工作,但没有成功。
问题原因:您的服务是使用'Any CPU'构建的,这在使用COM组件的64位系统上导致错误。您需要将其构建为'x86'。
解决方法:在Visual Studio中,右击项目,然后选择属性。点击生成选项卡,然后在平台目标下将Any CPU改为X86。
更新:启用32位应用程序
进入IIS -> 应用程序池 -> 高级设置 -> 启用32位应用程序
正如我在问题中所提到的,我已经尝试过这个,结果出现错误Could not load file or assembly 'TestWebSimpleMath' or one of its dependencies. An attempt was made to load a program with an incorrect format.
好的,现在我遇到了访问被拒绝的错误,这离解决问题更近了。我将按照这个问题(stackoverflow.com/questions/14019401/…)中的建议进行操作,希望能解决所有问题。感谢您的帮助,我会告诉您进展如何。
我无法告诉您在生产系统中我们遇到了多少次这个问题。应用程序池的设置总是罪魁祸首。