2009-07-30 16 views
138

Ho provato molto duramente ma non riesco a trovare una soluzione su come impostare il valore di timeout della sessione per la sessione in-process per un'applicazione Web ASP.Net.Come impostare il timeout della sessione in web.config

Sto utilizzando VSTS 2008 + .Net 3.5 + C#. Ecco cosa ho scritto da solo per impostare il timeout per essere 1 minuto, è corretto?

ho scritto nella sezione system.web nel web.config

<sessionState timeout="1" mode="InProc" /> 
+5

Il modo in cui si definisce il timeout è corretta. Hai qualche problema con esso? –

+4

sì, è finita .. –

+7

Sai che questo significa che scadrà dopo 1 minuto di inattività, non dopo 1 minuto dal suo inizio? La mia ipotesi è che se stai facendo questa domanda, e hai digitato correttamente il timeout, potresti essere indotto in errore su come funziona. –

risposta

255

Se si desidera impostare il timeout a 20 minuti, usare qualcosa di simile a questo:

<configuration> 
    <system.web> 
    <sessionState timeout="20"></sessionState> 
    </system.web> 
</configuration> 

dovrebbe vedere voi proprio

+11

20 minuti o ore? (timeout = "20") –

+13

Config indica il timeout in minuti, quindi 20 minuti – Wolfwyrd

44

Il valore che si imposta nell'attributo timeout è uno dei modi corretti per impostare il valore di timeout della sessione.

L'attributo timeout specifica il numero di minuti che una sessione può essere inattiva prima di essere abbandonata. Il valore predefinito per questo attributo è 20.

Assegnando un valore 1 a questo attributo, hai impostato la sessione da abbandonare in 1 minuto dopo il suo inattività.

Per verificare ciò, creare una pagina aspx semplice, e scrivere questo codice nell'evento Page Load,

Response.Write(Session.SessionID); 

Aprire un browser e andare a questa pagina. Verrà stampato un ID di sessione. Attendere un minuto per passare, quindi premere Aggiorna. L'ID della sessione cambierà.

Ora, se la mia ipotesi è corretta, si desidera fare disconnettere i propri utenti non appena la sessione scade. Per fare questo, si può mettere su una pagina di login che verificherà le credenziali utente, e creare una variabile di sessione come questo -

Session["UserId"] = 1; 

Ora, si dovrà eseguire un controllo su ogni pagina per questa variabile come questo -

if(Session["UserId"] == null) 
    Response.Redirect("login.aspx"); 

Questo è un esempio di come funzionerà.

Tuttavia, per rendere le app sicure di qualità di produzione, utilizzare le classi Roles & Membership fornite da ASP.NET. Forniscono l'autenticazione basata su form che è molto più reliabletha della normale autenticazione basata sulla sessione che si sta tentando di utilizzare.

+0

Grande consiglio ... Assicurarsi di impostare una variabile Session prima di eseguire il test con Response.Write (Session.SessionID); in caso contrario si aggiornerà con un nuovo ID ogni volta che si aggiorna. –

1

Utilizzare questo in web.config:

<sessionState 
    mode="InProc" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" 
    cookieless="false" 
    timeout="20" 
/> 
+30

Non hai bisogno della maggior parte degli attributi che elencherai, solo 'timeout '. 'stateConnectionString' e' sqlConnectionString' vengono ignorati quando 'mode =" InProc "', ei valori per 'mode' e' cookieless' sono impostati sui loro valori predefiniti. Quindi, questo distilla davvero la risposta di Wolfwyrd. – arcain

Problemi correlati