使用ADO在IntraWeb上初始化错误

时间:2009-07-16 00:29:32

标签: delphi ado intraweb

已经在Evil Exchange上被问过,但一如既往没有帮助。我今天遇到这个问题:

使用IntraWeb创建独立的Web应用程序时,当我尝试在浏览器中测试我的应用程序中的会话时,我在IDE中遇到此异常:

  

$ 7C812A6B的首次机会异常。   异常类EOleSysError用   消息'CoInitialize还没有   被称为”。处理WebContactManager.exe   (1112)

如果我在IDE异常对话框中单击“继续”,则浏览器本身只显示:

  

200 OK

...而不是我主表单上的控件。

当我将ADO替换为其他数据库组件(如dbExpress或BDE)时,似乎不会发生此错误。

这个错误告诉我什么,我该如何解决?

(注意我使用的是“VCL for the Web”IntraWeb组件,内置D2007)。

提前感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:8)

the link you quoted中提供的“解决方案”基本上是错误的,或者至少是不完整的。只有将ServerController.ComInitialization设置为ciMultiThreaded为true,IW才会保证每个线程都能正确初始化COM。 (例如,考虑Ajax回调)

如果您创建自己的自定义线程,那么您必须自己为该线程调用CoInitialize - 因为Intraweb不知道您的自定义线程。

答案 1 :(得分:3)

刚刚找到了这个here的答案:

  

我找到了一个更优雅的解决方案   整个问题源于使用   Intraweb,我宁愿得到Intraweb   为我初始化com。对此进行排序   很好。

     

使用MS SQL DbExpress时   带有Intraweb的驱动程序或ADO驱动程序,   您必须设置ComInitialization   ServerController中的属性   “ciMultiThreaded”。

     

这将消除“CoInitialize   没有被称为“错误。