Errore di CoInitialize su IntraWeb utilizzando ADO
Domanda
già chiesto alla Borsa di Male, ma come sempre che era nessun aiuto. Sto avendo questo problema oggi:
Quando si crea un'applicazione web stand-alone utilizzando IntraWeb, ottengo questa eccezione in IDE quando provo a testare una sessione da mia app nel browser:
Prima eccezione possibilità a $ 7C812A6B. classe di eccezione EOleSysError con messaggio 'CoInitialize non è stato chiamato'. processo WebContactManager.exe (1112)
Se faccio clic su "Continua" nella finestra di dialogo eccezione IDE, il browser si mostra solo:
200 OK
... piuttosto che i controlli sulla mia forma principale.
Questo errore non sembra verificarsi quando sostituisco ADO con altri componenti database come dbExpress o BDE.
Che cosa è questo errore mi dice, e come posso risolvere il problema?
(Nota sto usando il magazzino "VCL per il Web" componenti IntraWeb che vengono built-in con D2007).
Grazie in anticipo per qualsiasi aiuto!
Soluzione
La "soluzione" fornite in il link citato è fondamentalmente sbagliato o almeno incompleta. Solo impostando ServerController.ComInitialization a ciMultiThreaded true IW si gurantee che tutti filo otterrà COM inizializzato correttamente. (Per esempio pensare di callback Ajax)
Se si crea la propria connessione personalizzati allora si dovrà chiamare CoInitialize per quel filo da soli anche se -. Come Intraweb non conosce le discussioni che personalizzati
Altri suggerimenti
Appena trovato una risposta a questo qui :
Ho trovato una soluzione più elegante come il Tutto il problema ha avuto origine da utilizzare Intraweb, io invece arrivare a intraweb inizializzare COM per me. Questo lo ordina ben fuori.
Quando si utilizza il DbExpress MS SQL conducente o il driver ADO con Intraweb, è necessario impostare il ComInitialization proprietà nel ServerController a ‘CiMultiThreaded’.
Questo elimina il "CoInitialize Non è stato definito" errore.