我正在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服务器上无错误地运行此代码。
有没有人有任何建议?感谢。
答案 0 :(得分:0)
好的,问题出在用VB6编写的COM对象中。潜在的错误是"无效的过程调用或参数"。发生错误的原因是应用程序需要缺少系统环境变量。变量是在用户级别定义的,但它们不会为应用程序池使用的用户加载。
一旦我为系统添加了缺少的环境变量,错误就消失了。