i am trying to insert a record into my database when a session times out, but the Session_OnEnd doesn't seem to be called... i read somewhere that it is not called but i didn't pay attention to it, and now it seems to be true.
Basically session_onend will not fire in my global.asa files! I have just made a very simple test to prove its not my programming and it still doesnt fire. Session_onstart works a treat but onend will not work even if you force the session to expire with abandon. I have tried on 2 of our servers now and it doesnt work on either.
my simple test is this:
Sub Session_OnEnd application("test") = "hello" End Sub
Now surely that should work. i obviously have a page that writes that test variable to the page but its always empty.
In my site I have a users system, when a user loges in his ID is placed in his cookies (cookies("uid")) so what I am trying to do is write a code in the Global.asa that will write in my DB whenever a loged user session starts and ends.
my problem is that the Session_OnEnd event does not support the use of cookies and even worse then that it does not support the CreateObject method in the Server Object with wich I connect to my DB.
So this is my code in the Global.asa, If you guys have any idea on how to make this code work, despite the disadvantages the Session_OnEnd Event has...
<script language="vbscript" runat="server"> Sub Application_OnStart Dim dbpath dbpath = Server.Mappath("data") & "db.mdb" application("CnStr_Main") = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath End Sub
sub Session_OnStart If request.cookies("uid")<>"" then Dim tmpconn,tmpRS,tmpDSNName,tmpsql Set tmpconn = Server.CreateObject("ADODB.Connection") Set tmprs = Server.CreateObject("ADODB.Recordset") tmpDSNName = application("CnStr_Main") tmpconn.Open tmpdsnname tmpsql = "SELECT * FROM users WHERE id=" & request.cookies("uid") tmprs.open tmpsql,tmpconn,3,3 if not tmprs.EOF then tmprs(12) = 1 tmprs.update end if tmprs.close tmpconn.close end if end sub
sub Session_OnEnd If request.cookies("uid")<>"" then Dim tmpconn,tmpRS,tmpDSNName,tmpsql Set tmpconn = Server.CreateObject("ADODB.Connection") Set tmprs = Server.CreateObject("ADODB.Recordset") tmpDSNName = application("CnStr_Main") tmpconn.Open tmpdsnname tmpsql = "SELECT * FROM users WHERE id=" & request.cookies("uid") tmprs.open tmpsql,tmpconn,3,3 if not tmprs.EOF then tmprs(12) = 0 tmprs.update end if tmprs.close tmpconn.close end if end sub </script>
So when *does* Session_OnEnd fire in my Global.asa file? Does it fire when they click a link to leave the site? Does it fire when the session times out?
I have an ASP application that is a electronic purchase orders system. My problem is that only 3 people can authorise a purchase order. When a purchase order is selected I update the table to show that the field is locked. If they complete the form then the database is updated and the lock is removed, all though at this stage the record moves into another part of the system and the lock becomes redundant. If however they dont complete the form the record is left in a permanent locked state, it could be that they decided to look at the record then navigated away or closed the browser. So i thought maybe i could stick some code that updates the database into the session_OnEnd in the global.asa, so after 20 minutes when the session has ended the lock will free. I don't however have any experience with this and don't even know if this will work. The code won't be a problem its just whether this process will actually work. I am thinking that I code put the order_id into a session variable then when the session variable ends i run a sub in the .asa file that gets the session variable and updates the table.
When a session end i want to delete a folder, however it doesn't seem to work, TempFolderPath is a global variable. or do i have to save the folder path in the db and use it when the the session ends ?
sub Session_OnEnd DeleteTempPath(TempFolderPath) end sub
Does this Scripting.FileSystemObject.DeleteFolder will it delete file that are in the folder or just empty folder.
I am tracking all activity on one of my sites, but if the user does not hit the LOGOUT button, I don't get a Logged out entry. I would like to stick it into the global.asa file so that it will do it when their session ends no matter how they exit.
This code below is what I have in my asa file now, but does not seem to be working.
Sub Session_OnEnd IF Session("USER_ID") <> 0 THEN oDb = Server.CreateObject("adodb.connection") ConnStr = "SQL CONNECTION STRING" oDb.Open(ConnStr) oDb.Execute("INSERT INTO Log (mLogin, IP, EventTime, EventDescr) VALUES("+Session("USER_ID")+", '"+Session("USER_IP")+"', GetDate(),'Log Out')") END IF
I'm simply trying to write a session id to a database using Session_OnStart and then remove that line from the database using Session_OnEnd so that I know when a user has logged in and logged out again. Here's the Session_OnStart code that works fine. There's just a bit field and an int field in a SQL Server database: Code:
Does anyone know why the Session_OnEnd subroutine in global.asa never gets called? I set Session.Timeout = 1, I also have debugging code that writes to a text file.
Session_OnStart writes to this file, however Session_OnEnd does not. I am also trying to access a database in this routine and it never happens, however I can access the database from within Session_OnStart. I have tried this on PWS and on line using IIS with the same results.
i know that Session_OnEnd (global.asa) do not support "response" i need somehow to redirect after the Session_OnEnd *if it will shoot of course i understand that there is some way to do this with application?
Sub Session_OnEnd Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionString = Application("Connection_String") Conn.Open 'here is the error .... End Sub
A Conn object is created the same way in Session_OnStart and is used throughout the application, and Application("Connection_String") still exists here (I tested). So I suppose the error is caused by the fact that we are in Session_OnEnd.
My Session_OnStart works but Session_OnEnd does not work. Here's the code...can anyone tell me what's wrong with my code or if anything else on the server that needs to be changed. The Session_OnStart does create the folder for me with the SessionID as the folder name but Session_OnEnd does not delete that folder. Code:
Through the years there's always been trepidation about relying on the Session_OnEnd routine being fired at the conclusion of a user session, hence my instinctive avoidance of using it in anything I've created.
Now comes a time when it'd actually be desirable to use this feature; can anyone tell me if its reliability is any better with IIS6 (under Server 2003) than it was with previous IIS incarnations?
I can successfully delete files using fso.DeleteFile when in an ASP script. But in Session_OnEnd, where I'd *really* like to clean up files, it appears that DeleteFile doesn't work. I've tried every combination I could think of. I've verified the filespecs I'm using by logging to a session log file.
BTW, I found out the hard way that I can't reference Request.ServerVariables("APPL_PHYSICAL_PATH") from within Session_OnEnd. I had to copy that to Session("AppPath") to keep it around for the OnEnd event. Without that, ASP just bails out of OnEnd, ignoring the remainder of the subroutine.