DLL 访问错误:8007007e 找不到指定的模块 - QuickBooks SDK

问题描述 投票:0回答:1

我有一个 ASP.NET 应用程序与桌面版 QuickBooks SDK 交互。

当以下代码在我们的目标服务器(在托管公司)上执行时:

QBSessionManager SessionManager = new QBSessionManager();

我收到错误消息:

为 CLSID 为 {BF97F9A2-A475-4F26-9B5B-3A14F02D9824} 的组件检索 COM 类工厂失败,原因如下:8007007e 找不到指定的模块。 (HRESULT 的异常:0x8007007E)

这个错误不会出现在我的本地机器上——QB相关的代码已经在我的本地机器上进行了全面测试。

应用程序是.NET Framework 4.7.2。 平台目标设置为 x86。 QB SDK 版本为 8.0。 问题服务器是 Windows Server 2019。

Interop.QBFC8.dll 和 qbfc8.dll 与 SDK 安装程序一起安装。 它们位于 C:\Program Files (x86)\Common Files\Intuit\QuickBooks 中。 他们没有被阻止。 Interop.QBFC8.dll 在 GAC 中。

在我的代码中,我添加了对 InProcServer32 的检查:

string clsid = "{BF97F9A2-A475-4F26-9B5B-3A14F02D9824}";
RegistryKey t_clsidKey = Registry.ClassesRoot.OpenSubKey("CLSID");
RegistryKey t_clsidSubKey = Registry.ClassesRoot.OpenSubKey("CLSID\\" + clsid + "\\InProcServer32");

在服务器上运行时返回 C:\Program Files (x86)\Common Files\Intuit\QuickBooks\qbfc8.dll.

CLSID {BF97F9A2-A475-4F26-9B5B-3A14F02D9824} 和 QBFC8.QBSessionManager 的相关注册表项/值都与我在本地计算机上的相匹配。我可以提供这些。

它是 64 位机器上的 32 位 DLL,所以它正在执行 Wow6432Node 注册表项 - 它们看起来不错。

我们尝试提高 C:\Program Files (x86)\Common Files\Intuit\QuickBooks 的权限 - 这没有效果。

我们在对服务器运行测试时运行了 Process Monitor。我们没有看到注册表访问错误。我们看到 Interop.QBFC8.dll 和 qbfc8.dll 都被访问了,貌似没有错误。

我们尝试在 IIS 中将“启用 32 位应用程序”设置为真/假 - 同样的错误。

被这个东西困扰了一个月。如果有人有任何建议,我一定会很感激!

asp.net dll com interop quickbooks
1个回答
0
投票

要将 QBFC 系统与 QuickBooks 桌面一起使用,而不是 Web 连接器或“RDS”服务器,则在使用 QBFC 界面时需要完整版的 QuickBooks 桌面。

事实上,第一次这样做时,QuickBooks 桌面会显示:

正如您在上面看到的,如果您没有启动(有)QB 运行,安全提示可以允许 QBFC 界面运行,但是如果您还没有运行它,则会启动一个副本。

所以,这里的“context”是必须的。 QBFC 接口系统有两种选择,实际上在以后的版本中他们已经删除了 web 连接器部分,因此您将使用 web api 调用。

但是,对于使用 QBFC 而不是某些“连接器”技术的界面,是的,您需要在运行 QBFC 的同一台计算机上安装完整版的 QuickBooks。

如前所述,第一次运行使用 QBFC 界面编写的此类应用程序时,QuickBooks 中的用户将看到/获取并必须回答 + 处理上述安全提示。

因此,这个答案的一部分“取决于”QBFC 接口代码的编写和使用方式,但在大多数情况下,QBFC 需要在同一台计算机上安装 QuickBooks 的完整工作副本。

如前所述,RDS 服务器或销售点界面除外(如果这是您使用 QBFC + sdk 所做的)。另一种可能是使用网络连接器。

但是,假设一个 100% 的桌面环境?那么是的,要在这个有限的上下文中使用 QBFC,是的,您需要在运行使用 .net 和 SDK 编写的界面代码的同一台计算机上运行 QB 的完整工作副本。

所以,答案是它“取决于”SDK 用于与 QB 交互的内容和方式。并且取决于“如何”将因此确定您是否需要安装完整的 QB 以使用 QBFC 界面。

© www.soinside.com 2019 - 2024. All rights reserved.