1
I am using Silverlight application. From this I have called  QuickBooks using QBFC12. Based on my request I got the data and pushed into my own application. Everything fine.

但是当我在 iis 中部署我的项目时……我无法连接到快速书籍。每当我连接到快速书籍时,我都会收到消息:无法启动快速书籍。

我被困在这里。我不知道从哪里开始?有人让我从 webconnector 开始。如果我使用 webconnector,我必须创建 .qwc 文件。我必须通过

1.AppURL

2.用户名

3.密码..等

这是其他用户界面……但我不想使用任何其他应用程序……例如 webconnector。

但我的要求是:

使用我的 asp.net 应用程序,我必须给最终用户选择:比如

1.客户

2.供应商

3.复选框之类的项目。

根据选择,我必须获取相关数据。

任何人都可以请建议我如何从部署区域连接快速书籍.....

或任何其他解决方案......

4

1 回答 1

0

以防其他人遇到同样的问题。您不能直接从 ASP.NET 运行它。QuickBooks 并非设计为从服务运行。然而,我找到了一种混合解决方案。使用控制台应用程序和自托管的 WCF Restful 服务。您可以打开与 Quickbooks 的连接,开始会话,并将其存储在静态/共享变量中。要使用连接,您必须将数据访问方法存储在任务中,并将任务传递给主线程可以轮询的线程安全集合。这似乎通过了显着的Could not connect to Quickbooks错误消息和线程挂起。

我建议使用ConcurrentQueue(Of Task(Of Object))

示例服务端点调用

Dim tsk As New Task(Of Object)(Function() Quickbooks.createVendor(collectionOfVendors))
Queue.Enqueue(tsk)
Dim result = Await tsk ' Wait for your task to complete here

主要

waitAgain: ' Await queue to fill Do Until Queue.Count > 0 'Wait for queue request Loop
' Process queue Dim proc = Task.Run(Function() ProcessQueue()) proc.Wait()
GoTo waitAgain

进程队列

Dim activeTsks As New List(Of Task(Of Object)) For i = 0 To Queue.Count - 1 Dim target As Task(Of Object) = Nothing If Queue.TryDequeue(target) AndAlso target.IsntNothing AndAlso target.Status = TaskStatus.Created Then
activeTsks.Add(target) target.Start() End If
Next
' Wait for all in the queue to process Await Task.WhenAll(activeTsks)

异常处理可能很棘手,但如果您在正确的位置捕获,您可以将异常传播到端点方法并正确响应。QuickBooks 不一定是为这种类型的使用而设计的,因此另一个警告是 QuickBooks 将挂起,直到它完成完成来自

IMsgSetRequest

我很快就会整理一个 github 存储库。

于 2020-05-13T16:14:12.970 回答