我正在尝试帮助拥有通过 QBXML SDK 与 Quickbooks 集成的 Web 应用程序 (ASP/C#) 的客户。
我想在用户 session 中打开与已处于事件状态的 QuickBooks 实例的连接。
有问题的相关代码:
if (rp == null)
rp = new RequestProcessor2();
if (!connected)
{
rp.OpenConnection2("IMS", "Internal Management System", QBXMLRPConnectionType.localQBD);
connected = true;
}
if (xticket == null)
xticket = rp.BeginSession(cfg.qbfile, QBFileMode.qbFileOpenMultiUser);
实际上,这将尝试通过 DCOM 启动 Quickbooks 的新实例,这不是一个可行的选择。根据 QBSDK 文档,我尝试将 null 传递给 BeginSession 的第一个参数,该参数应该使用打开的 qbw 文件。
但是,它没有像预期的那样连接到正在运行的 Quickbooks 实例,而是启动了一个新实例,最终产生错误:
“如果 QuickBooks 公司数据文件未打开,则对“BeginSession”方法的调用必须包含数据文件的名称。”
运行 Web 应用程序的 IIS AppPool 使用与我尝试连接的 Quickbooks 实例相同的用户。
这一切都是由不再可用的第三方设置的,当然,他们没有留下任何有关该系统如何工作的文档。欢迎任何帮助。
最佳答案
I'm trying to help a client who has a web application (ASP/C#) that integrates with Quickbooks via the QBXML SDK.
不幸的是,这种方法行不通。
QuickBooks 的一个众所周知的限制是:
- QuickBooks 必须在您尝试连接的用户 session 中运行
- QuickBooks 必须能够访问 GUI(它使用 GUI 消息泵来运行)
由于您的 Web 应用程序是从 IIS 中运行的,因此这两个条件都不满足,并且与 QuickBooks 的连接将失败。您应该改用 QuickBooks Web Connector。
I want to open up a connection to an already active QuickBooks instance in a user session.
不幸的是,QuickBooks 不允许这样做。
关于quickbooks - 通过 QBXML 连接到已打开的 Quickbooks 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977822/