我在运行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,所以它似乎不是一个明显的权限问题。
其他人有类似的东西吗?
答案 0 :(得分:18)
确保您的应用程序池是32位(或支持32位应用程序)或您的COM控件支持64位应用程序。最有可能的是,您的本机COM库是32位,默认情况下您的池运行64位工作程序,无法加载32位COM DLL。
答案 1 :(得分:0)
如果在IIS下运行,是真的使用“UserX”,还是使用“Guest”,“ASP.NET”或“IWAM_USER”或类似的其他帐户。此外,如果从IIS调用它,您可能需要检查权限...不仅在文件级别,而且在机器的COM配置级别。
上次我不得不处理这个问题,我会这样做
START - >运行 - > DCOMCNFG
或者只是提出组件服务。
然后展开组件服务 - >计算机 - >我的电脑 - > DCOM配置,然后向下滚动到您尝试使用的COM对象。右键单击它并且有多个abs ...标识是它将被启动的那个...你可以覆盖它以放入特定用户“绕过”假定的“默认”。仅限测试,我会设置一个限制较少的帐户(超级用户,不一定是管理员,但最后尝试),看看是否有帮助。
此外,在“安全”选项卡上,还有可以启动/激活谁以及谁可以“访问”它的选项。您可能需要确保自己的帐户有效。