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.
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.
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?
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:
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 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.
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>
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:
I have one application folder containing all ASP code files. I want host multiple sites pointing to same code. Can I do this ? If YES then how I can assign diffrent global.asa to each application...
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.
I am trying to put a condition in my Global.asa file based on the server name.the reason, I want to set a global string as a application variable based on the server I am on. I also need to set a coonection string based on the value of the server. I need to use this connection string to retrieve values from an sp in application on start that sets a load of global variables so I can't really do this anywhere else.
I have a site which until this morning, was on a remote server. The structure was that the "site" was actually a folder on the server, as I am designer and use this arrangement to develop sites. Under the root directory, I had modified the global asa file to include session variables. Ok, so I download the site (folder) to my hard drive, and put it in the folder of "MY Documents" called MyWebs. I then opened VB Studio and created a new solution, which is pointing to the before mentioned directory in My Documents. When I pull the site up in IE, the session variables were not being called, and I realized I had not copied over the asa file. So I did so, placing a copy of it in the hard drive's c inetpub wwwroot directory, and also directly in the my docs mywebs directory,and the site's directory as well. It seems it is still not being called.Can anyone tell me what I am doing wrong?
I have IIS 5.0 installed on for a test server. the global.asa file runs perfectly.
when tryng the same application on win server 2003 IIS 6.0 the global.asa does not fire. i have set the application as a virtual site and given rights for iwam and iusr. What else could be the problem. Code:
How does IIS 6.0 treat the global.asa file? I had the following problem;
1. uploaded a new site to the win3k server
2. had incorrect db connection string in Session_OnStart in global.asa and website caused errors.
3. Changed the global.asa file to include the correct details. Saved the file. Still got the same errors.
I could not resolve this unless restarting the WWW Service on this server. In IIS 5.0 the global.asa file would reload after resaving it (as the timestamp is updated).
I even waited the next day before restarting the service because I though Session_OnStart expires after my session ends...but the error was still there in the morning.
Hopefully someone will make sense of it for me. Here is the code (I inherited) in the global.asa
Sub Application_OnStart Application("DB.ConnectionString")= "" Application("MaxLoginAttempts") = 5 Set Application("Con") = Server.CreateObject("ADODB.Connection") Session("Test") = Now() End Sub
I created a dll to track our users and I want to call it in the Global.asa. How do I do this? I've seen the <OBJECT> tag to create an object, but I'm not sure how to use it correctly.
i'm a little bit confused with using application_onstart.. as u can see in the following code... my DB connection and SQL statements is currently included in my application_onstart event.. but, unfortunately, i wasn't able to reference Application("sUser") in my asp when i tried to run my website Code:
We have over 100 asp pages that reference a table (distribution_components). We added a new column and primary key to that table, so now we have to modify the where clause to include that column (we have to make the new column = to a session variable in the page)
The table appears 531 times in our code. Is there some util or method that allows us to change it globally, other than going to each occurrance, and adding the new column to the where clause.
I am in much need of some help with my global.asa file. I use ASP and mySQL. In a nutshell, When a registered user logs in, a field in I have a field that gets updated in my DB Table. It is a TINYINT. When they log in, it updates the value to 1, when they log out, it updates it to 0. I use a tiny iFrame to create a loop displaying users with the value of 1. Basically a cheasy "Who's Online" function.
How ever I am now trying to create a global.asa file to say when the session times out, I want the global file to just update the value back to 0. I am also attempting it so that if the users browser window closes and then gets reopened PRIOR to the timeout limit, It knows they are still logged in. I can provide my script if anyone thinks they can help. !!!!!!!!!!!!!!!!!!!
I think my final thought would be that when the user closes their browser, that the session ends and the DB field gets updated from a 1 to a 0.