Hej! Jag brukar lösa detta problem genom följande (bara testat på localhost, win2000 pro): Det du skall göra är följande: Tack! Egentligen skall du ha 2 classer och separera logiken. En för select eller kanske inga databasanrop alls, samt en för ins/upd/del som då arbetar med transaktioner.Problem med COM-objekt
Håller på med ett litet projekt där jag är tvungen att bygga en liten COM-komponent.
Förutsättningar (Allt ligger på samma burk):
IIS 5.0
MSSQL 8.0
VS 6.0
Jag skapar ett objekt av min komponent på en testsida (ASP)
<code>
<%
Server.ScriptTimeout = 20
Dim objMyFileHandler
Dim Result, Fel
Set objMyFileHandler = CreateObject("OY04_PA_KFS.NewUpload")
Result = objMyFileHandler.HandleFile("C:\temp\OY04_PA_KFS.xls")
Fel = objMyFileHandler.getLatestError()
Response.Write ("Funktionen HandleFile(path) i klassen NewUpload returnerade: " & Result & "<br/><br/>")
Response.Write ("Senaste felet: " & Fel & "<br/>")
Set objMyFileHandler = Nothing
%>
</code>
Problemet är att processen DLLHOST.EXE (som startar när jag skapar objektet) inte avslutas. Detta innebär att jag inte kan skapa en ny dll när jag gjort ändringar.
Jag måste starta om burken varje gång för att få bort DLLHOST.EXE som verkar arbeta med min dll.
Nu e jag rätt kass på hur sånt där funkar, men va faan... Vill ju slippa starta om efter varje test!
Grymt tacksam för tips!
Mvh
uffeSv: Problem med COM-objekt
Gå in på ISS och plocka bort "Anonym åtkomst" på den mapp där dina aspfiler ligger som anropar din dll.
Klicka sedan på run i VB.
Kör sedan din aspfil.
Gör du på detta sätt slipper du skapa din dll på nytt hela tiden.Sv: Problem med COM-objekt
1. Starta admin för komponenter (MTS)
2. Välj att "stanna" ditt paket
3. Markera de klasser som visas och radera de
4. Byt den fysiska dll:en genom att dra dll:en rakt in i det fönstret där de du precis tog bort låg så kommer den registrera om sig igen och starta.
Jag gjorde en liten film för att förtydliga detta:
1. Skapa ett paket
2. Lägga till dll:en i paketet
3. Ta bort dll:en
4. Lägg till den nya omkompilerade dll:en
Se http://www.pellesoft.se/login/video/mts_component.aviSv: Problem med COM-objekt
En fråga till...
Måste jag i mitt VB-projekt ange att dllén ska användas via MTSTransactionMode?
Och i så fall... Vilket ska jag välja?
0 - NotAnMTSObject
1 - NoTtransactions
2 - RequiresTransaction
3 - UsesTransaction
4 - RequiresNewTransactionSv: Problem med COM-objekt
Den du använder för ins/upd/del skall ha 3, den andra 1