IIS in CreateOleObject

Vse kar se tiče programiranja za internet.
Odgovori
NekdoSi
Prispevkov: 13
Pridružen: 02.07.2008 14:22:41

IIS in CreateOleObject

Odgovor Napisal/-a NekdoSi » 02.07.2008 14:26:33

Napisan imam dll za ISS server (isapi). Stvar deluje ok vse dokler ne poženem: CreateOleObject...
Takrat mi vrže error: A dynamic link library (DLL) initialization routine failed. Zanimiva je stvar, da ista funkcija, ki jo uporabim v dll deluje normalno.

A se slučajno ole objecti pod iis ne smejo uporabljat? Ali je kaj drugega?

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

IIS in CreateOleObject

Odgovor Napisal/-a aoven » 02.07.2008 14:35:45

V ISAPI DLL-ju se koda izvaja v sekundarnem threadu, zato moraš pred OLE/COM komunikacijo v vsakem requestu obvezno najprej poklicati OleInitialize() oz. CoInitialize[Ex](), ter po koncu requesta tudi OleUninitialize() oz. CoUninitialize(). V helpu si preberi, kaj te funkcije počnejo, da ne boš česa nehote zamočil.

Aleksander

NekdoSi
Prispevkov: 13
Pridružen: 02.07.2008 14:22:41

IIS in CreateOleObject

Odgovor Napisal/-a NekdoSi » 02.07.2008 15:00:42

OleInitialize sem dodal na začetek vendar ni sprememb. Je možno, da je težava v samem iss?

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

IIS in CreateOleObject

Odgovor Napisal/-a aoven » 02.07.2008 21:53:31

Kdaj natanko pa kličeš CreateOleObject()? Upam, da ne med inicializacijo ISAPI DLL-ja.

Aleksander

NekdoSi
Prispevkov: 13
Pridružen: 02.07.2008 14:22:41

IIS in CreateOleObject

Odgovor Napisal/-a NekdoSi » 03.07.2008 08:02:44

Kličem ga po zahtevi uporabnika. Sedaj sem zadevo rešil. Problem je bil v tem, da sem imel Application protection nastavljen na previsoko.

aoven
Prispevkov: 2338
Pridružen: 27.06.2001 23:56:07

IIS in CreateOleObject

Odgovor Napisal/-a aoven » 03.07.2008 08:17:44

Aha, ok. Vseeno pa ohrani OleInitialize()/OleUninitialize() na začetku/koncu vsakega takšnega requesta. Preveriti moraš le, kaj ti vrne OleInitialize(), da potem kličeš OleUninitialize() samo če je bil prvi klic uspešen.

Aleksander

Odgovori