2015-01-16 52 views
1

我試圖幫助客戶通過QBXML SDK與Quickbooks集成的Web應用程序(ASP/C#)。通過QBXML連接到已打開的Quickbooks實例

我想在用戶會話中打開與已經激活的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實例使用相同的用戶。

這是由一個不再可用的第三方建立的,當然,他們沒有留下關於這個系統應該如何工作的文檔。任何援助將受到歡迎。

回答

1

我設法爲我的問題創建了一個可接受的解決方法,對於任何嘗試類似的人來說。 (其中,說實話,我不建議我與遺留代碼在這裏工作。)

首先,我研究的簡要概述:

與QuickBooks的QBXml接口使用的COM請求,以溝通。現在,無論出於何種原因,無論是設計,錯誤還是限制COM,Quickbooks都無法通過LSA Logon Sessions進行通信。實際上,這意味着與Quickbooks運行在同一個控制檯會話中也必須運行QBXml代碼。此外,Quickbooks和您的應用程序都必須具有相同的UAC提升狀態。

我發現沒有辦法讓IIS可靠地啓動Quickbooks。在我之前建立這個系統的人通過一些非正統的方法設法做到了這一點。這是令人難以置信的片斷,並導致多個問題。

無論如何,我沒有管理一個可以接受的解決辦法,在IIS Express形式。 IIS Express可以在標準用戶會話下運行。因此,在相同的登錄會話下運行Quickbooks和Web應用程序(通過IIS Express)可以使它們成功通信。

這不是一個永久性的解決方案,因爲在標準用戶範例中運行諸如此類的服務存在缺陷,但這是一種可接受的解決方法,並且允許我的客戶在我們重構時運行他們的業務。我計劃首先將與Quickbooks進行通信的應用程序部分分開,然後將它們移到自己的代碼庫中。這將允許面向應用程序的Web部分以更標準的方式運行,並通過比COM調用更可靠的方式與QB集成代碼進行通信。

感謝基思·帕默幫我指出正確的方向。

0

I'm trying to help a client who has a web application (ASP/C#) that integrates with Quickbooks via the QBXML SDK.

不幸的是,這種方法是行不通的。

就這麼的QuickBooks的知名限制:

  1. 的QuickBooks已經在你試圖從
  2. QuickBooks的連接也有機會獲得一個GUI用戶會話中運行(它使用GUI消息泵功能)

因爲您的Web應用程序正在從IIS內運行,所以這兩個條件都不符合,並且連接到QuickBooks將失敗。您應該使用QuickBooks Web連接器來代替。

I want to open up a connection to an already active QuickBooks instance in a user session.

不幸的是,QuickBooks不會允許這樣做。

+0

網絡連接器是不是在這個時候一個可行的選擇,因爲這需要一個遺留應用程序的完全重新設計。此外,您似乎在說,在用戶會話中運行快速書本既不可能也不需要。此外,有問題的應用程序可以成功連接到由DCOM自動啓動的quickbooks實例。我不知道如何,介意,但它確實如此。 –

+0

我在哪裏說在用戶會話中運行QuickBooks是不可能的?做什麼你問的唯一支持的方式(也是唯一可靠的方式)是有Web應用程序本身在同一個普通用戶GUI會話運行的QuickBooks在運行。 –

+0

你說的Quickbooks不會允許我連接到在用戶會話下運行的實例。 (答案的最後一句)。我可能誤解了某些部分,這就是我要求澄清的原因。此外,可靠或支持是不相關的,只有可能的事情。這是由不可靠的第三方製作的傳統應用程序。最終的目標是完全重寫,但是我的客戶在此之前無法承受這一點,所以我需要先解決這個被黑客入侵的黑盒子。 –

相關問題