Avatar billede submann Nybegynder
03. december 2005 - 04:18 Der er 14 kommentarer og
1 løsning

Session_OnEnd bliver ikke udført

Er der nogle der kan svare mig på hvorfor Session_OnEnd ikke bliver udført ?

Session_OnStart bliver fint udført og de er næsten ens...

Jeg har siddet og set gamle spørgsmål igennem, i følge det jeg kan finde er det rigtigt det jeg har gjort...

Min Global.asa ser sådan ud:
<Script Language="VBscript" Runat="Server">

Sub Application_OnStart
' Noget kode
End Sub

Sub Application_OnEnd
' Noget kode
End Sub

Sub Session_OnStart

  Session.TimeOut = 1

  Session("Start") = Now()

  strTest = "Logget ind klokken " & Time()

  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & Server.MapPath("/_db/test.mdb") & ";"
  strProvider = strProvider & "Persist Security Info=False"
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open strProvider

  strSQL = "Update Tabel Set Test='" & strTest & "' Where id=1"
  objConn.Execute strSQL

  objConn.Close
  Set objConn = Nothing

End Sub

Sub Session_OnEnd

  strTest = "Er logget ud klokken " & Time()

  strProvider = ""
  strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
  strProvider = strProvider & "Data Source=" & Server.MapPath("/_db/test.mdb") & ";"
  strProvider = strProvider & "Persist Security Info=False"
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open strProvider

  strSQL = "Update Tabel Set Test='" & strTest & "' Where id=1"
  objConn.Execute strSQL

  objConn.Close
  Set objConn = Nothing

End Sub

</Script>

Med venlig hilsen
Submann
Avatar billede Slettet bruger
03. december 2005 - 06:40 #1
Er du sikker på at det ikke bare er fordi den først bliver udført cirka 20 minutter efter at brugeren er holdt op med at bruge sitet?
Avatar billede submann Nybegynder
03. december 2005 - 11:37 #2
Underligt, har slet ikke fået mail om at der er kommet en kommentar...

Ja det er jeg sikker på, jeg har prøvet at lade den stå en hel nat (10 timer) uden held...
Avatar billede submann Nybegynder
03. december 2005 - 11:40 #3
Men den burdte vel også blive udføret efter 1 min når jeg har sat Session.TimeOut = 1
Eller hvad ?
Avatar billede Slettet bruger
03. december 2005 - 11:44 #4
Ja det burde den blive , kan ikke umiddelbart se nogen god grund til det ikke skulle fungere. Du siger det første fungere, altså onStart ?
Avatar billede submann Nybegynder
03. december 2005 - 11:47 #5
Ja Session_OnStart virker fint men med Session_OnEnd sker der slet ikke noget...
Avatar billede busschou Praktikant
03. december 2005 - 12:00 #6
Du kan evt læse min artikkel om global.asa
Du kan ikke benytte Server.Mappath i session_onend !
Avatar billede busschou Praktikant
03. december 2005 - 12:04 #7
hov og så kunne jeg jo være venlig at lægge et link til artiklen ;o)
http://www.eksperten.dk/artikler/752
Anyway så tror jeg nok din kode køres, men du får blot intet resultat fordi du ikke kan benytte server.mappath. Og desværre får man jo ikke sådan en fejl meddelelse på skærmen når det er session_onend, netop fordi session_onend først køres som "oprydningskode" efter sessionen er død
Avatar billede submann Nybegynder
03. december 2005 - 17:04 #8
Det var Server.Mappath det var galt med, nu virker det...

busschou vil du ligge et svar, og tak for en fin artikel... ;o)
Avatar billede submann Nybegynder
03. december 2005 - 17:07 #9
Hvad er forresten den rigtige måde at skrive kommentar i global.asa ?

Er det med ' eller med // ?
Avatar billede Slettet bruger
03. december 2005 - 17:09 #10
'
Avatar billede busschou Praktikant
03. december 2005 - 23:31 #11
Så er jeg tilbage fra jule frokost og her kommer et svar :o)
Godt det virker nu
Avatar billede submann Nybegynder
03. december 2005 - 23:35 #12
Ja jeg er på vej til en lidt sen jule frokost... ;o)

Bruger man ikke Application.lock i Sub Application_OnStart ?

Eksempel:
Sub Application_OnStart
  Application.lock
    Application("db") = "DBQ=" & Server.MapPath("database.mdb") &";UID=;PWD=;"&_
                        "Driver={Microsoft Access Driver (*.mdb)};"
  Application.unlock
End Sub

Takker for hjælpen... ;o)
Avatar billede busschou Praktikant
03. december 2005 - 23:42 #13
Nej det gør man ikke - fordi det er unødvendigt :o)
Forklaringen er at Application_OnStart køres som det første inden applikationen starter når applikationen genstartes.
Altså - hvis du fx uploader en ny global.asa fil, så vil applikationen genstartes første gang en bruger igen går ind på din side. Men lige inden da vil der laves et kald til Application_OnStart. Der er kun eet kald til Application_OnStart og ingen kan få adgang til noget før Application_OnStart er kørt netop een gang.
Og eftersom ingen har adgang til applikationen - ja så er det overflødigt
Jeg tror dog ikke der sker noget ved at man gør det alligevel....
Avatar billede busschou Praktikant
03. december 2005 - 23:42 #14
og takker for points :o)
Avatar billede submann Nybegynder
03. december 2005 - 23:44 #15
OK...

Jamen tak igen... ;o)
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