Ошибка повторной инициализации в IntraWeb с помощью ADO

StackOverflow https://stackoverflow.com/questions/1134845

  •  16-09-2019
  •  | 
  •  

Вопрос

Уже спрашивал на Бирже Зла, но, как всегда, это не помогло.Сегодня у меня возникла эта проблема:

При создании автономного веб-приложения с использованием IntraWeb я получаю это исключение в IDE, когда пытаюсь протестировать сеанс из своего приложения в браузере:

Исключение первого шанса в размере $ 7C812A6B.Класс исключения EOleSysError с сообщением "CoInitialize не был вызван".Процесс WebContactManager.exe (1112)

Если я нажму "продолжить" в диалоговом окне исключения IDE, сам браузер просто покажет:

200 ОК

...вместо элементов управления в моей основной форме.

Похоже, что эта ошибка не возникает при замене ADO другими компонентами базы данных, такими как dbExpress или BDE.

О чем мне говорит эта ошибка и как мне ее исправить?

(Обратите внимание, что я использую стандартные компоненты IntraWeb "VCL для Интернета", которые поставляются встроенными в D2007).

Заранее спасибо за любую помощь!

Это было полезно?

Решение

"Решение", представленное в ссылка, которую вы процитировали является в принципе неправильным или, по крайней мере, неполным.Только установив ServerController.Повторная инициализация ciMultiThreaded в true IW гарантирует, что каждый поток будет правильно инициализирован COM.(например, подумайте об обратных вызовах Ajax)

Если вы создадите свои собственные пользовательские потоки, то вам придется самостоятельно вызывать CoInitialize для этого потока, поскольку Intraweb не знает о ваших пользовательских потоках.

Другие советы

Только что нашел ответ на этот вопрос здесь:

Я нашел более элегантное решение, поскольку вся проблема возникла из-за использования Intraweb, я скорее попрошу Intraweb инициализировать com для меня.Это все улаживает выходит красиво.

При использовании вашего MS SQL dbExpress драйвера или драйвера ADO с Intraweb, вы должны установить для свойства ComInitialization в ServerController значение ‘ciMultiThreaded’.

Это устранит ошибку "Повторная инициализация не была вызвана".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top