与ASP.NET的互操作’80040154类未注册’

我在运行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,所以它似乎不是一个明显的权限问题。

其他人有类似的东西吗?

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

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

上次我不得不处理这个,我会这样做

开始 – >运行 – > DCOMCNFG

或者只是提出组件服务。

然后展开组件服务 – >计算机 – >我的电脑 – > DCOM配置,然后向下滚动到您尝试使用的COM对象。 右键单击它并且有多个abs …身份是它将被启动的那个…你可以覆盖它以放入特定用户“绕过”假定的“默认”。 对于仅测试,我会设置一个限制较少的帐户(高级用户,不一定是管理员,但最后尝试),看看是否有帮助。

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