Avatar billede cr2000 Nybegynder
28. august 2003 - 13:12 Der er 3 kommentarer og
1 løsning

Vil ikke slette i DB fra global.asa

Nogen der kan se fejlen. Koden til at slette fra databasen virker hvis man kører den fra en normal ASP side.


<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    ' Nulstiller antallet af brugere når applikationen (serveren) startes
    Application("ActiveUsers") = 0
    Application("MaxActiveUsers") = 0
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Forøger antallet af brugere med 1, når en session startes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
        If Application("MaxActiveUsers") < Application("ActiveUsers") then
        Application("MaxActiveUsers") = Application("ActiveUsers")
        end if

' Tilføj brugeren til databasen...
Set DataConn = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("db/users.mdb")
DataConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
Set link = Server.CreateObject("ADODB.RecordSet")
link.open "Select * From Users Order by id", DataConn, 1, 3 

link.addnew
link.Fields("SessionN") = Session.SessionID
link.Fields("UserName") = "Standard Bruger"
link.Fields("UserIP") = Request.ServerVariables("REMOTE_ADDR")
link.update

link.close

    Application.UnLock
End Sub

Sub Session_OnEnd
    ' Reducer antallet af brugere med 1, når en session afsluttes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
        Set DataConn = Server.CreateObject("ADODB.Connection")
        DBPath = "DBQ=" & server.mappath("db/users.mdb")
        DataConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath
        Set RS = DataConn.Execute("DELETE * FROM Users WHERE SessionN = '" & Session.SessionID & "'")
    Application.UnLock
End Sub
</SCRIPT>
Avatar billede eagleeye Praktikant
28. august 2003 - 13:18 #1
server.mappath  funktionen virker ikke i Session_OnEnd, du er nød til at skrive den fysiske sti.

        Set DataConn = Server.CreateObject("ADODB.Connection")
        DBPath = "DBQ=c:\homes\www\xxxxdk\db\users.mdb"
        DataConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath


Derudover virker Session_OnEnd event ekstremt dårligt. Selv om du retter det er det ikke sikkert det virkr. Du kan søge på eksperten og se mange har samme problem (når søge siden virker).

Problmmet er også speciel stort når Access bruges som database. Bruger man MSSQL eller mySQL bliver databasen hyppigere opdateret. Problemmet er at det ikke er for alle sessions der kommer et OnEnd af en eller anden grund.
Samt jo ældre IIS version du har, jo størrer er problemet også.
Avatar billede ursusquietus Nybegynder
28. august 2003 - 13:19 #2
Faar du en fejl, eller virker det bare ikke? Jeg er ikke sikker paa om Session.SessionID allerede er vaek naar du kommer ind i Session_OnEnd.
Avatar billede cr2000 Nybegynder
28. august 2003 - 13:34 #3
Jeg får ikke nogen fejl da det jo er i global.asa

Jeg syntes det virker underligt at du siger at server.mappath ikke virker når den godt kan tilføje brugere til databasen...
Avatar billede eagleeye Praktikant
28. august 2003 - 14:12 #4
Nu skriver jeg meget præsist Server.Mappath ikke virker i Session_OnEnd jeg har ikke sagt at det ikke viker de andre steder. Server.Mappath virker fint i Session_OnStart eksvis.

Bevis, kig under "Remark":
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/htm/ref_scrpt_glsesevntonend.asp
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester