首页 > 解决方案 > 无法在 Interop.QBFC13.IQBSessionManager 从注册表中读取密钥(HRESULT 异常:0x80040150 (REGDB_E_READREGDB))

问题描述

在部署 QuickBooks Web 连接器调用的 Web 服务更新期间,我们没有遇到与Interop.QBFC13.IQBSessionManager. 请注意我们的代码都在开发环境中工作,并且过去在我们的生产服务器上工作过。

我们在 64 位 Windows 2016 服务器上运行,但将 IIS 站点用于我们的 Web 服务作为 32 位运行,并将项目编译为 x86 并验证 dll 是 x86。

我们从这个错误开始,然后将 App Pool Identity 权限添加到与此类 Id/ 关联的注册表项中

错误消息:System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> System.InvalidCastException:无法将类型为“Interop.QBFC13.QBSessionManagerClass”的 COM 对象转换为接口类型“Interop.QBFC13.IQBSessionManager”。此操作失败,因为 IID 为“{50F59D7F-4E65-45D8-8F19-135F9FE05296}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

之后,错误消息从No such interface supported...变为Library Not Registered

现在它的给予

System.Runtime.InteropServices.COMException:无法在 Interop.QBFC13.IQBSessionManager.CreateMsgSetRequest 从注册表中读取密钥(HRESULT 异常:0x80040150 (REGDB_E_READREGDB))

但它没有说明它正在尝试读取哪个注册表项。

它总是在我们的代码中触发错误的相同位置:

IMsgSetRequest msgSetRq = sessMgr.CreateMsgSetRequest(qbXMLCountry, (Int16)qbXMLMajorVers, (Int16)qbXMLMinorVers);

我们已经尝试卸载、重新安装 QB SDK、QBFC13_0Installer.exe 和 QBXMLRP2Installer.exe ......所有这些都在卸载和重新安装后重新启动。

标签: c#quickbooksqbfc

解决方案


并不是实际问题的真正答案,但您通常可以使用Process Monitor找出注册表的权限(和其他)问题。

实际问题似乎是IIS APPPool对注册表项没有适当的权限。


推荐阅读