5

我有一个 ASP.NET 站点,它需要使用我们开发的 COM 接口。当我在 Visual Studio 环境中测试网站时,它运行良好。但是,当我将站点部署到 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

我尝试了几件事

  1. 确保包含该类的 dll 实际上已注册。我确保注册表中的条目与错误指出加载失败的 CLSID 匹配。
  2. 取消注册 dll 并使用 regsvr32.exe 重新注册
  3. 按照这个问题的建议。我尝试使用的课程不是服务,所以我不确定这个问题与我的问题有多相关。
  4. 按照这个问题的建议。同样,我不确定这有多相关,因为该问题表明这是一个拒绝访问错误。
  5. 注销并重新注册 dll 后重新启动我的机器
  6. 按照此答案中的建议将我的项目的平台目标从Any CPU更改为。这会导致另一个问题。我认为这是倒退了一步。x86Could 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 个小时,但没有运气。

4

1 回答 1

8

原因
您的服务是针对“任何 CPU”构建的,导致您在使用 COM 组件的 64 位上出错。您需要为“x86”构建它。

解决方案
在 Visual Studio 中,右键单击PROJECT ,然后选择PROPERTIES。单击BUILD选项卡,然后在PLATFORM TARGET下将Any CPU更改为X86

这个问题可能重复。

更新:启用 32 位应用程序

转到 IIS -> 应用程序池 -> 高级设置 -> 启用 32 位应用程序

检查此相关问题

于 2013-05-30T02:05:53.563 回答