我有一个 Quickbooks Web 连接器 (QBWC) 接口的工作原型实现。一切都按预期工作,除了closeConnection 方法大部分时间都没有被调用。
预期行为
QuickBooks Web 连接器程序员指南规定如下(第 21 页):
当 QBWC 得到这个字符串数组时会发生什么?如果字符串数组的第二个成员包含“none”或“nvu”,QBWC 将显示一条消息,调用 closeConnection 并停止会话。
此外,指南在“clientVersion 和身份验证回调”插图中指出了相同的信息(图 2-2,第 20 页):
调用authenticate
如果返回为“none”或“nvu”,
显示消息,调用closeConnection并停止
实际行为
当 authenticate 方法返回值“none”时,将调用这些(并且只有这些)Web 方法(按列出的顺序):
- 服务器版本
- 客户端版本
- 认证
请注意,这仅适用于没有可用于 QBWC/Quickbooks 的工作时。当有工作时,authenticate web 方法返回一个空字符串,QBWC 随后调用以下 web 方法:
- 发送请求Xml
- 接收响应Xml
- 关闭连接
编辑 1:在强制 clientVersion web 方法返回“E”结果后,它会停止更新过程,如程序员指南中所述,但在这些情况下也不会调用 closeConnection web 方法。有趣的是,QBWC在 clientVersion 返回“E”结果后仍然调用 serverVersion Web 方法。
故障排除工作
- 验证(通过跟踪)字符串数组的第二个成员确实包含值“none”。但是,该会话不会触发 closeConnection 回调。
- 仔细检查了 QBWC 客户端日志 (QWCLog.txt),发现没有提及 closeConnection 被调用,因此没有与此类调用相关的错误。
- 验证用于 closeConnection 的方法代码与程序员指南(第 68 页)中的示例相同。
支持信息
对于它的价值,这里有一些实现的细节。
- ASP.Net 3.5 (c#)
- QBWC 2.0.0.139