3

すでに悪の交換について尋ねましたが、いつものようにそれは助けにはなりませんでした。私は今日この問題を抱えています:

IntraWebを使用してスタンドアロンWebアプリケーションを作成する場合、ブラウザでアプリからセッションをテストしようとすると、IDEで次の例外が発生します。

$7C812A6Bでの最初のチャンスの例外。メッセージ「CoInitializeが呼び出されていません」を含む例外クラスEOleSysError。WebContactManager.exe(1112)を処理します

IDEの例外ダイアログで[続行]をクリックすると、ブラウザ自体に次のように表示されます。

200 OK

...メインフォームのコントロールではなく。

ADOをdbExpressやBDEなどの他のデータベースコンポーネントに置き換えても、このエラーは発生しないようです。

このエラーは何を教えてくれますか、どうすれば修正できますか?

(D2007に組み込まれているストックの「VCLfor theWeb」イントラウェブコンポーネントを使用していることに注意してください)。

助けてくれてありがとう!

4

2 に答える 2

9

あなたが引用したリンクで提供されている「解決策」は、基本的に間違っているか、少なくとも不完全です。ServerController.ComInitializationをciMultiThreadedにtrueに設定することによってのみ、IWはすべてのスレッドがCOMを正しく初期化することを保証します。(たとえば、Ajaxコールバックについて考えてください)

独自のカスタムスレッドを作成する場合は、そのスレッドに対してCoInitializeを自分で呼び出す必要があります。これは、Intrawebがカスタムスレッドを認識していないためです。

于 2009-07-16T04:48:12.750 に答える
3

ここでこれに対する答えを見つけました:

問題全体がIntrawebの使用に起因するため、より洗練された解決策を見つけました。むしろ、Intrawebにcomを初期化してもらいます。これはそれをうまく整理します。

IntrawebでMSSQLDbExpressドライバーまたはADOドライバーを使用する場合は、ServerControllerのComInitializationプロパティを「ciMultiThreaded」に設定する必要があります。

これにより、「CoInitializeが呼び出されていません」というエラーが解消されます。

于 2009-07-16T00:39:06.290 に答える