【发布时间】:2012-05-09 02:18:47
【问题描述】:
正如标题所说,我想从 ASP.NET MVC 应用程序中实例化一个 COM 对象,如下所示:
dynamic obj = Activator.CreateInstance(Type.GetTypeFromProgID(progID));
但它会抛出以下 ComException:
检索具有 CLSID 的组件的 COM 类工厂 {16542E4F-4594-4B97-922D-BE9C478F93BB} 由于以下原因而失败 错误:800aea5f HRESULT 异常:0x800AEA5F。
相同的代码适用于具有以下构建配置的 Winforms 应用程序:Platform: x86 和 Platform target: x86。
我为 mvc 应用和我使用 COM 对象的程序集设置了与 Winforms 应用相同的构建配置。
我使用的是 Windows 7、IIS 7.5、ASP.NET v4.0 应用程序池,启用 32 位应用程序 True,网站在具有管理员权限的用户下运行。
您有什么建议可以帮助解决这个问题?
【问题讨论】:
-
即使您启用了 32 位模式,这并不意味着您的 .NET 代码运行在 32 位。所以我猜你是从 64 位 .NET 代码调用 32 位 COM 吗?
-
@YvesR 正如我在问题中所说,我为 mvc 应用程序和我使用 COM 对象的程序集设置了构建配置:
Platform: x86和Platform target: x86,因此它应该正在运行32 位代码。 -
您是否正确设置了 DCOM 权限以便可以从网站启动 com+ 对象?我的意思是您在网站上运行的帐户的默认启动设置 (dcomcnfg.exe)。在 win2k8 机器上设置 IIS 时总是需要调整设置。
-
检查 Environment.Is64BitProcess 是否为假,以确保您使用的是 32 位代码...
-
800AEA5F 听起来确实像是权限问题。当您说“网站在具有管理员权限的用户下运行”时,您指的是应用程序池的默认用户吗?
标签: c# asp.net-mvc-3 com