|
31.08.2007, 11:53 | #1 |
Участник
|
Решение проблемы
Решение проблемы найдено. Правдо, сильно кривоватое...
Необходимо зарегистрировать AxaptaCOMConnector как COM+. Как правило, в настроечных утилитах этот пункт недоступен, поэтому регистрировать придется вручную. После этого, процедура закрытия сессии выглядит так: X++: Com axCom; ; axCom = new COM('AxaptaCOMConnector.Axapta2'); axCom.Logon2(...); ( ) axCom.logoff(); try { axCom.stop(); } catch (exception::error) { // в случае ошибки удаляю последнюю строку infolog, // которая генерится автоматически ошибкой COM if (infolog.line()) { infolog.clear(infolog.line()-1); } } Если же не давать команду axCom.stop(), то, по непонятным причинам, соединение разорвано не будет. Кстати, признаком того, что осталось висеть не разорванное в предыдущем сеансе соединение является то, что новое соединение вернет номер сессии равный 65535 и в списке процессов останется висеть процесс dllHost.exe от имени пользователя. Убиение этого процесса также разрывает соединение. Процесс dllHost.exe - это процесс, вызвываемый при работе COM+. При работе через обычный COM данный процесс не запускается. |
|
Теги |
ax2.5, com connector, sysusersonline, активные пользователи |
|
|