Jag har två dll'er som kommer att användas i ett intranätprojekt. Se till så att DLL1 har en referens till DLL2 innan du kompilerar den. Hej, Nej, dll:erna behöver inte ändras för att fungera i MTS. Det är bara om du vill kunna använda transaktionshanteringen tror jag. Jag gjorde ett litet enkelt test nu Hmm, skumt det här.. Jo då, visst har jag provat det...utan resultat dock Jag har varit med om samma sak ett flertal gånger. Som sagt brukar fungera att skapa om allt från början igen. Ungefär som allt annat i windows, restart :-)Inställningar på dll'er?
ASP anropar DLL1 som i sin tur anropar DLL2
DLL1's uppgift är endast att prata med DLL2
DLL2 pratar med en Exchangeserver
När jag debuggar i utvecklingsmiljön så funkar det bra men när jag registrerar dom och kör dom på riktigt så vill det sig inte riktigt...
Det verkar gå fel med anropen mellan DLL1 och DLL2
Som det är nu så har båda dll'erna dessa inställningar:
Properties:
Unattended Execution
Upgrade ActiveX Controls
Retained In Memory
Compile to Native Code (default inställningarna)
Project Compability
Wait for components to be created
Klassproperties:
Instancing - MultiUse
MTSTransactionModes - NotAnMTSObject
Är det någon som har en idé vore jag tacksam.
Måste man stoppa in dom i MTS/ComponentManager?Sv: Inställningar på dll'er?
Project -> References
Blir det något informativt felmeddelande?
Prova dessutom att registrera dem i MTS:en. Funkar det så funkar det. Det finns inga direkta nackdelar med att använda MTS:en såvitt jag vet.
Hoppas det hjälper!Sv: Inställningar på dll'er?
Referenser finns.
Nu fick jag det lilla piffiga felet:
Class does not support Automation or does not support expected interface
Jag har även fått object or with not set eller vad det lyder...
Måste dllen(a) har någon MTSmode? type usesTransactions?Sv: Inställningar på dll'er?
Det första felet du nämner uppkommer om man har refererat ett objekt som uppvisar ett annat interface än det du använder i koden. Dvs du har antagligen refererat en tidigare eller senare version av dll:en än den som faktiskt är registrerad på servern. Uppkommer vanligtvis när utvecklaren har en senare version av MDAC på utvecklingsdatorn än vad som finns på servern..Sv: Inställningar på dll'er?
Jag la dit några helloWorld funktioner
i dll1
En enkel som tar en parameter in och spottar ut den igen...
asp -> dll1 -> asp <-- Funkar
En lika enkel som tar parametern och skickar till en lika dan funktion som den som funkar fast i dll2
asp -> dll1 -> dll2 -> dll1 -> asp <-- detta funkar inte
då får jag felet:
Class does not support Automation or does not support expected interface
om jag anropar funktionen i dll2 direkt
asp -> dll2 -> asp <-- Funkar
Det är snacket mellan dll'erna det hänger på.
I dll1 använder jag bara referens till dll2
I dll2 använder jag cdo.dll (v 1.2.1 på båda) och msado21.tlb (hade 2.5 förut men har gått ner nu
Ska jag dimma dll2 på något konstigt vis i dll1?Sv: Inställningar på dll'er?
Men det känns som att referensen från dll1 till dll2 är korrupt på något sätt. Jag hade provat att:
Öppna dll1 i VB och ta bort referensen till dll2
Avregistrera dll2 (regsvr32 /u)
Omkompilera dll2 (och registrera den igen, för säkerhets skull)
Lägga tillbaks referensen till dll2
Omkompilera dll1.
Fast du har väl redan gjort detta till förbannelse antar jag.. :)
Annars borde väl instantieringskoden se ut något såhär (länge sedan, detta):
Dim objDLL2 As DLL2.clsWhatever
Set objDLL2 = CreateObject("DLL2.clsWhatever")Sv: Inställningar på dll'er?
MEN (inte dumt med ett men ibland)
Jag tog och gjorde helt nya dll'er av båda med samma referenser och allt. tror inte något skiljer dem åt. och nu funkar det.
Mycket knepigt.
Tack för all hjälp!Sv: Inställningar på dll'er?