Problemer med Session_OnEnd i Global.asa
Hejsa,Jeg forsøger at lave en log, så jeg har se, hvornår en bruger i et internt system er logget af.
Der er jo reelt 3 muligheder:
1) Brugeren klikker på logaf (og bliver logget af; handlingen gemmes i databasen)
2) Brugeren lukker vinduet eller forlader siden (klarer jeg med en popup via onUnload; handlingen gemmes i databasen)
3) Sessionens uddør - og her har vi så problemet
Alle ovenstående (da alm. logaf foregår via Session.Abandon) burde jo blive fulgt op af Session_OnEnd i global.asa, men der er jo forskellige begrænsninger i denne fil.
Har fundet ud af, at man ikke kan bruge Server.MapPath, at man ikke kan bruge Access-databaser og at den gamle IIS4 var ret ustabil mht. Session_OnEnd.
Jeg troede derfor, jeg var smart, at jeg i stedet blot anvendte en tekstfil til loggen og lavede følgende globalasa:
----------
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
strFil = "e:\intern\filer\log.txt"
Set objFile = Server.CreateObject("Scripting.FileSystemObject")
If objFile.FileExists(strFil) Then
Set fsUdtraek = objFile.OpenTextFile(strFil, 8)
Else
Set fsUdtraek = objFile.CreateTextFile(strFil)
End If
strTekst = Now() & " -- Application started"
fsUdtraek.WriteLine strTekst
End Sub
Sub Application_OnEnd
strFil = "e:\intern\filer\log.txt"
Set objFile = Server.CreateObject("Scripting.FileSystemObject")
If objFile.FileExists(strFil) Then
Set fsUdtraek = objFile.OpenTextFile(strFil, 8)
Else
Set fsUdtraek = objFile.CreateTextFile(strFil)
End If
strTekst = Now() & " -- Application stopped"
fsUdtraek.WriteLine strTekst
End Sub
Sub Session_OnStart
strFil = "e:\intern\filer\log.txt"
Set objFile = Server.CreateObject("Scripting.FileSystemObject")
If objFile.FileExists(strFil) Then
Set fsUdtraek = objFile.OpenTextFile(strFil, 8)
Else
Set fsUdtraek = objFile.CreateTextFile(strFil)
End If
strTekst = Now() & " -- Session started: " & Session.SessionID
fsUdtraek.WriteLine strTekst
End Sub
Sub Session_OnEnd
strFil = "e:\intern\filer\log.txt"
Set objFile = Server.CreateObject("Scripting.FileSystemObject")
If objFile.FileExists(strFil) Then
Set fsUdtraek = objFile.OpenTextFile(strFil, 8)
Else
Set fsUdtraek = objFile.CreateTextFile(strFil)
End If
strTekst = Now() & " -- Session ended: " & Session.SessionID
fsUdtraek.WriteLine strTekst
End Sub
</SCRIPT>
----------
Desværre bliver Session_OnEnd aldrig kørt (selvom alle Session_OnStart virker fint). Nogen, der kan forklare hvorfor??
// Kevin
