7
votes

Where does classic ASP store the value for session timeout? I have looked through the code and this classic ASP website isn't using Global.asa(so no "Session_OnStart") or Session.timeout=x. The website is hosted on IIS 7.On IIS for this website,in Features view,double-clicking on "ASP" -> Session Properties -> Enable session is set to 'True' and the Time-out value is set to 20. The problem is: though the session time-out is set to 20 mins. on IIS,it times out after 5 minutes. Is there any other way/place to modify the session timeout value for this classic ASP website?

Can someone help me with this please?

Edit: I looked at the settings for the application pool.The Idle time-out is 20 mins. and Recycling->Regular Time Interval is set to 1740.

4
Have you also check the other recycling constraints, I tend to disable them all and use the Session timeout value in the ASP section in IIS.user692942
@Lankymart:- All the other settings in IIS have the default values. Is there anywhere else I should be looking?user1550951
Session timeout is fine but if any of the Application Pool Recycling settings are set they will override the Session timeout. The defaults in the Application Pool are no good and need to be changed.user692942
I'm sorry,I dont think I know what you are talking about....The "regular time interval" under app pool->advanced settings->Recycling is set to 1740 minutes. Which setting for the app pool should I modify?user1550951
You're right it is minutes, but my point still stands if you want it to only timeout based on the 20 minute Session Timeout you need to disable all the values in the Application Pool Recycling settings or you will still get weird behaviour with your session dropping unexpectedly.user692942

4 Answers

7
votes

Following on from my comments, your Recycling settings need to be set like the following image to make sure the Application Pool will not be reset.

Recycling settings in IIS 7+

It's also worth setting the "Generate Recycle Event log Entry" so you can see what events are causing your Application Pool to reset. That way you can monitor it in the Event Viewer.

enter image description here


Useful Links

3
votes

You can do it 2 way.

  1. Put global asa file into root of your site and define session time out there

  2. You can introduce following line on top of each of the pages in question (if you not using include header)

    <%
       Session.Timeout=20
       Server.ScriptTimeout=1200
    %>
    

20 is been period in minutes and 1200 is same period in seconds. Keep in mind that server takes a seconds not a minutes!!! By default IIS terminates any script if it runs longer then 90 seconds.

If you using include file as a header then you will need to do it only once there, on the top of the page right after option explicit. and assuming that you already did disabled all app pool defaults as what @Lankymart suggested.

1
votes

In IIS7, click on your site, double click ASP, then expand the Limits Properties. You will then see a Script Time-out setting in HH:MM:SS format. Set that and it should fix things.

Source: http://technet.microsoft.com/en-us/library/bb632464.aspx

-3
votes

Have you looked at the web.config file? I am not a classic asp expert, but in asp.net you can also set session state in the file like so:

<sessionState mode="InProc" cookieless="false" timeout="60"></sessionState>

You may want to verify 2 things.

1.) That you app pool is not recycling too often.

2.) What I mentioned above.