Показать сообщение отдельно
Старый 24.03.2011, 17:03   #1  
Кирилл
Гость
 
n/a
Проблема с созданием экземпляра com-объекта на сервере
Добрый день,
AX2009 интегрирую с внешней системой.

Внешняя система предоставляет com-объект для манипуляций с ней,
в AX2009 запилил класс для запуска в пакетном режиме, который будет периодически обменивается данными с внешней системой посредством использования экземпляра данного com-объекта.

Для начала сделал по-старинке:
класс клиентский, пакетный сервер запускается в отдельной клиентской сессии.
Все работает.
Можно переводить и на серверный вариант, чтобы не париться с клиентской сессией.

Поставил RunOn = Server.
Метод new подпилил так:

X++:
void new()
{
    InteropPermission p;
    ;
    super();

    p = new InteropPermission(InteropKind::ComInterop);
    p.assert();
    storageConnector = new COM("Cleverence.Warehouse.StorageConnector");
//    storageConnector = new COM("CDO.Message"); // для проверки создаются ли другие объекты
    CodeAccessPermission::revertAssert();
}
Пробую. Получаю:
Цитата:
COM-объект класса "Cleverence.Warehouse.StorageConnector" не удалось создать. Убедитесь, что объект был должным образом зарегистрирован на компьютере "AOS-DEV-01V".
Убедился.

На указанном AOS установлен также и клиент. Открываю его.
Ставлю у класса RunOn = Client - запускается.
Ставлю у класса RunOn = Server - указанная выше ошибка.

Под доменным админом то же самое.

Другие объекты типа CDO.Message или ADODB.Recordset создаются нормально при любом значении RunOn.

Если кто в состоянии, подскажите, пожалуйста, в каком направлении копать.
За это сообщение автора поблагодарили: Ace of Database (3), AlexSt (1).