首页 > 解决方案 > 从 ASP.NET 创建后期绑定 COM 对象时出现 IClassFactory 错误

问题描述

我正在 Windows Server 2016 上设置 ASP.NET 网站。该网站还使用以下 C# 代码创建 COM 对象的实例:

    Type type = Type.GetTypeFromProgID(ProgID, Server, true);
    dynamic object = Activator.CreateInstance(type);

但是,程序会在该行引发异常,Activator.CreateInstance并显示以下错误:

Creating an instance of the COM component with CLSID {E2FB185E-F4D8-482A-B27B-A08BB4F9EAE9} from the IClassFactory failed due to the following error: 800a0005 Exception from HRESULT: 0x800A0005 (CTL_E_ILLEGALFUNCTIONCALL).

在 Server 2012 机器上安装时,我没有收到此错误。此外,如果我在应用程序池使用的同一用户帐户下将其作为 Window 应用程序运行,我可以在 2016 服务器上运行此代码而不会出错。

有没有人有什么建议?谢谢。

标签: c#asp.netcomiis-10

解决方案


好的,所以问题出在用 VB6 编写的 COM 对象中。潜在的错误是“无效的过程调用或参数”。该错误是由于缺少应用程序所需的系统环境变量而发生的。这些变量是在用户级别定义的,但不会为应用程序池使用的用户加载。

一旦我为系统添加了缺少的环境变量,错误就消失了。


推荐阅读