Ошибка инициализации на IntraWeb с использованием ADO - PullRequest
3 голосов
/ 16 июля 2009

Уже спрашивали на Evil Exchange, но, как всегда, это не помогло. У меня сегодня такая проблема:

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

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

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

200 ОК

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

Эта ошибка не появляется, когда я заменяю ADO другими компонентами базы данных, такими как dbExpress или BDE.

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

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

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

Ответы [ 2 ]

8 голосов
/ 16 июля 2009

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

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

3 голосов
/ 16 июля 2009

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

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

При использовании драйвера MS SQL DbExpress или драйвера ADO с Intraweb необходимо установить для свойства ComInitialization в ServerController значение 'ciMultiThreaded'.

Это исключит "CoInitialize не был назван "ошибка.

...