Я пытаюсь помочь клиенту, у которого есть веб-приложение (ASP/C#), которое интегрируется с Quickbooks через QBXML SDK.
Я хочу открыть соединение с уже активным экземпляром 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);
Как есть, это попытается запустить новый экземпляр Quickbooks через DCOM, что не является жизнеспособным вариантом. Следуя документации QBSDK, я попытался передать null первому аргументу BeginSession, который должен использовать открытый файл qbw.
Однако вместо ожидаемого действия по подключению к запущенному экземпляру Quickbooks он запускает новый экземпляр, что в конечном итоге приводит к ошибке:
«Если файл данных компании QuickBooks не открыт, вызов метода «BeginSession» должен включать имя файла данных».
Пул приложений IIS, в котором запущено веб-приложение, использует того же пользователя, что и экземпляр Quickbooks, к которому я пытаюсь подключиться.
Все это было установлено третьей стороной, которая больше недоступна, и, конечно же, они не оставили никакой документации о том, как эта система должна была работать. Любая помощь приветствуется.