Session timeout does not work at asp.net mvc 4 C# . Why?

20,496

Solution 1

Possibly, your IIS would have been configured to 20 minutes of TimeOut.

Change the IIS session timeout to 1 week 24 hours, which I hope will solve your problem.

Refer this

By design, the maximum value of timeout is set to be 24 hours. Check out Microsoft support forum

To achieve a larger window for timeout, you could consider maintaining session states in SQL, as suggested by @Marc.

Solution 2

Try moving your session state into Sql (link here). This should persist an IIS restart/app pool recycle etc.

Solution 3

Website Session.Timeout will work only when it is less than the application pool session timeout value; because whenever the application pool session timeout value is reached, that particular application pool will be restarted.

http://www.codeproject.com/Articles/113287/Why-Session-Timeout-is-not-working-for-your-websit

Solution 4

When the application is idle (no requests for some time), IIS may shut it down. This will destroy all Sessions.

Authentication stores it's data in a database and thus survives a restart.

Share:
20,496
Vitalii
Author by

Vitalii

merge keep

Updated on July 09, 2022

Comments

  • Vitalii
    Vitalii almost 2 years

    For my web site I configured login session timeout for 1 week in web.config file

    <system.web>
      <httpRuntime />
    
      <!-- Session keeps for 7 days -->
        <sessionState timeout="10080"></sessionState>
        <authentication mode="Forms">
          <forms loginUrl="~/" timeout="10080" slidingExpiration="true"/>
        </authentication>
      <!-- Configuration end  -->
    </system.web>
    

    Here is code for login

        [AllowAnonymous]
        [HttpPost]
        public ActionResult Login(string Login, string Password)
        {
            // empty passwords are not allowed
            if (Password == "")
                return Redirect(Request.UrlReferrer.ToString());
    
            bool LoginResult = WebSecurity.Login(Login, Password, true);
            return Redirect(Request.UrlReferrer.ToString());
        }
    

    I login, close browser and open it again go to my web site -> user is logged in. I close browser, wait some time (about 30 minutes) go to my web site -> user is logged off. Why? Session should be stored for 7 days but we does not have even 30 minutes. Whan can be the source of problem?

    Edit 1 The main idea is that I want to go back to the site in several days and still open it with logged in user

  • Vitalii
    Vitalii about 10 years
    I found this value but another problem appeared. I cannot set more than 23:59 hours there. And I need at least several.