2014-04-02 17 views
9

Per il mio sito web ho configurato login timeout della sessione per 1 settimana in file web.configIl timeout della sessione non funziona su asp.net mvc 4 C#. Perché?

<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> 

Ecco il codice per il 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()); 
    } 

faccio il login, chiudere il browser e riaprirlo andare al mio sito web -> utente è connesso. Chiudo il browser, attendo un po 'di tempo (circa 30 minuti) vai al mio sito web -> l'utente è disconnesso. Perché? La sessione deve essere conservata per 7 giorni, ma non abbiamo nemmeno 30 minuti. Whan può essere la fonte del problema?

Modifica 1L'idea principale è che io voglio tornare al sito in diversi giorni e ancora aprirlo con utenti registrati

+0

sei proprio sicuro che si desidera conservare i dati in memoria per 7 giorni dopo l'ultima visita? –

+0

Sì, è un sito Web interno che ha solo 3 utenti e sono stanco di immettere credenziali ogni volta – Vitalii

+0

Abbiamo lo stesso problema quando siamo passati da mvc3 a 4. – MBen

risposta

10

Eventualmente, il vostro IIS sarebbe stato configurato per 20 minuti di TimeOut.

Modificare il timeout della sessione IIS su 1 settimana 24 ore, che spero risolverà il problema.

consultare this

Di progettazione, il valore massimo di timeout è impostato per essere di 24 ore. Scopri il supporto di Microsoft forum

Per ottenere una finestra più grande per il timeout, si potrebbe prendere in considerazione il mantenimento di stati di sessione in SQL, come suggerito da @ Marc.

+0

Ho trovato questo valore ma è apparso un altro problema. Non posso impostare più di 23:59 ore lì. E ho bisogno di almeno diversi. – Vitalii

1

Quando l'applicazione è inattiva (nessuna richiesta per un po 'di tempo), IIS potrebbe spegnerlo. Questo distruggerà tutto il Sessions.

Authentication memorizza i dati in un database e quindi sopravvive a un riavvio.

3

Provare a spostare lo stato della sessione in Sql (link here). Questo dovrebbe persistere in un riavvio di IIS/riciclo del pool di applicazioni, ecc.

Problemi correlati