Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';80040154类未注册';通过ASP.NET的互操作_C#_Asp.net_.net_Iis_Com - Fatal编程技术网

C# ';80040154类未注册';通过ASP.NET的互操作

C# ';80040154类未注册';通过ASP.NET的互操作,c#,asp.net,.net,iis,com,C#,Asp.net,.net,Iis,Com,我在运行IIS6的Windows XP Pro SP2 x64计算机上收到以下错误: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {3C250CBD-6CC9-11D2-9457-00004B48467E} failed due to the following error: 80040154 Class not registered

我在运行IIS6的Windows XP Pro SP2 x64计算机上收到以下错误:

System.Runtime.InteropServices.COMException: 
Retrieving the COM class factory for component with CLSID
{3C250CBD-6CC9-11D2-9457-00004B48467E} failed due to the following error:
80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
尝试实例化COM互操作对象时会发生这种情况

奇怪的是,对于在与应用程序池(AD中的用户)相同的帐户下运行的控制台应用程序来说,这很好。也就是说,两者都使用UserX,所以这似乎不是一个明显的权限问题


其他人有类似的吗?

如果在IIS下运行,它是真的使用“UserX”,还是使用“Guest”、“ASP.NET”或“IWAM_USER”或类似的其他帐户。另外,如果它是从IIS调用的,您可能需要检查权限。。。不仅在文件级别,而且在机器的COM配置级别

上次我不得不处理这个问题时,我会这么做

开始->运行->DCOMCNFG

或者只打开组件服务

然后展开组件服务->计算机->我的计算机->DCOM配置,然后向下滚动到您尝试使用的COM对象。右键点击它,有多个abs。。。Identity是将作为发布的一个。。您可以覆盖该选项,将特定用户设置为“绕过”假定的“默认值”。仅用于测试,我会设置一个限制较少的帐户(超级用户,不一定是管理员,但最后试试),看看这是否有帮助


此外,在“安全”选项卡上,还提供了可启动/激活和“访问”的选项。您可能需要确保您的帐户在此范围内有效。

确保您的应用程序池为32位(或支持32位应用程序)或您的COM控件支持64位应用程序。最有可能的情况是,您的本机COM库是32位的,而您的池默认运行64位工作程序,无法加载32位COM dll。

应用程序池的位是多少,控制台应用程序的目标CPU体系结构是什么?如果COM对象即使确实已注册,也没有显示在该列表中?有什么建议吗?