Session timeout in ASP.NET

asp.netSessionTimeout

asp.net Problem Overview


I am running an ASP.NET 2.0 application in IIS 6.0. I want session timeout to be 60 minutes rather than the default 20 minutes. I have done the following

  1. Set <sessionState timeout="60"></sessionState> in web.config.
  2. Set session timeout to 60 minutes in IIS manager/Web site properties/ASP.NET configuration settings.
  3. Set idle timeout to 60 minutes in application pool properties/performance.

I am still getting a session timeout at 20 minutes. Is there anything else I need to do?

asp.net Solutions


Solution 1 - asp.net

Are you using Forms authentication?

Forms authentication uses it own value for timeout (30 min. by default). A forms authentication timeout will send the user to the login page with the session still active. This may look like the behavior your app gives when session times out making it easy to confuse one with the other.

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

Setting the forms timeout to something less than the session timeout can give the user a window in which to log back in without losing any session data.

Solution 2 - asp.net

I don't know about web.config or IIS. But I believe that from C# code you can do it like

Session.Timeout = 60; // 60 is number of minutes

Solution 3 - asp.net

Use the following code block in your web.config file. Here default session time out is 80 mins.

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

Use the following link for Session Timeout with popup alert message.

Session Timeout Example

FYI:The above examples is done with devexpress popup control so you need to customize/replace devexpress popup control with normal popup control. If your using devexpress no need to customize

Solution 4 - asp.net

In my situation, it was Application Pool. It is set to restart when idle for xx mins. When I set it to not restart, it seems to use value from Web Config.

Solution 5 - asp.net

Do you have anything in machine.config that might be taking effect? Setting the session timeout in web.config should override any settings in IIS or machine.config, however, if you have a web.config file somewhere in a subfolder in your application, that setting will override the one in the root of your application.

Also, if I remember correctly, the timeout in IIS only affects .asp pages, not .aspx. Are you sure your session code in web.config is correct? It should look something like:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

Solution 6 - asp.net

That is usually all that you need to do...

Are you sure that after 20 minutes, the reason that the session is being lost is from being idle though...

There are many reasons as to why the session might be cleared. You can enable event logging for IIS and can then use the event viewer to see reasons why the session was cleared...you might find that it is for other reasons perhaps?

You can also read the documentation for event messages and the associated table of events.

Solution 7 - asp.net

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>

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

Solution 8 - asp.net

If you are using Authentication, I recommend adding the following in web.config file.

In my case, users are redirected to the login page upon timing out:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

Solution 9 - asp.net

Since ASP.Net core 1.0 (vNext or whatever name is used for it) sessions are implemented differently. I changed the session timeout value in Startup.cs, void ConfigureServices using:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

Or if you want to use the appsettings.json file, you can do something like:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));

Solution 10 - asp.net

You can find the setting here in IIS:

Settings

It can be found at the server level, web site level, or app level under "ASP".

I think you can set it at the web.config level here. Please confirm this for yourself.

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

Solution 11 - asp.net

IIS sessions timeout value is for classic .asp applications only, this is controlled on IIS configuration. In your case For ASP.NET apps, only the web.config-specified timeout value applies.

Solution 12 - asp.net

The default session timeout is defined into IIS to 20 minutes

Follow the procedures below for each site hosted on the IIS 8.5 web

IIS Timeout configuration

> Open the IIS 8.5 Manager. > > Click the site name. > > Select "Configuration Editor" under the "Management" section. > > From the "Section:" drop-down list at the top of the configuration > editor, locate "system.web/sessionState". > > Set the "timeout" to "00:20:00 or less”, using the lowest value > possible depending upon the application. Acceptable values are 5 > minutes for high-value applications, 10 minutes for medium-value > applications, and 20 minutes for low-value applications. > > In the "Actions" pane, click "Apply".

Solution 13 - asp.net

if you are want session timeout for website than remove

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

tag from web.config file.

Solution 14 - asp.net

The Timeout property specifies the time-out period assigned to the Session object for the application, in minutes. If the user does not refresh or request a page within the time-out period, the session ends.

> IIS 6.0: The minimum allowed value is 1 minute and the maximum is > 1440 minutes.

Session.Timeout = 600;

Solution 15 - asp.net

After changing the session timeout value in IIS, Kindly restart the IIS. To achieve this go to command prompt. Type IISRESET and press enter.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkloneView Question on Stackoverflow
Solution 1 - asp.netHectorMacView Answer on Stackoverflow
Solution 2 - asp.netDmitrisView Answer on Stackoverflow
Solution 3 - asp.netRama Subba Reddy MView Answer on Stackoverflow
Solution 4 - asp.netlyordsView Answer on Stackoverflow
Solution 5 - asp.netCᴏʀʏView Answer on Stackoverflow
Solution 6 - asp.netdavidsleepsView Answer on Stackoverflow
Solution 7 - asp.netPaulo TolentinoView Answer on Stackoverflow
Solution 8 - asp.netamar beeharry panrayView Answer on Stackoverflow
Solution 9 - asp.netMattyView Answer on Stackoverflow
Solution 10 - asp.netChristian FindlayView Answer on Stackoverflow
Solution 11 - asp.netCarlos EView Answer on Stackoverflow
Solution 12 - asp.netGuicbView Answer on Stackoverflow
Solution 13 - asp.netNayan HodarView Answer on Stackoverflow
Solution 14 - asp.netMuhammad AwaisView Answer on Stackoverflow
Solution 15 - asp.netVarun RView Answer on Stackoverflow