25 messaggi dal 23 gennaio 2006
Come faccio per sapere se il timeout della sessione è scaduto? mi serve per fare il redirect alla pagina di login una volta scaduto (la pagina di errore che esce è proprio bruttissima).
637 messaggi dal 12 agosto 2005
La prima soluzione che viene in mente è creare un file "global.asax" e scrivere in "Session_End":
HttpContext.Current.Response.Redirect("..");


Attenzione però che funziona solo con Sessione in modalità "InProc".
69 messaggi dal 29 luglio 2004
www.pentalab.it
non credo sia una soluzione quella proposta.

Se usi i meccanismi di autenticazione di Asp.Net lo dovrebbe fare in automatico.

Se te ne crei uno personalizzato basta che alla pagina di logon _start metti una variabile di session valorizzata e poi ad ogni richiesta verifichi se esiste il valore nella variabile. Se non esiste significa che la session è scaduta e fai il redirect.

Mi pare più logico usare i meccanismi di asp.net
3.168 messaggi dal 06 settembre 2002
Contributi | Blog
Ciao,

i meccanismi di autenticazione non hanno nulla a che vedere con la sessione. il consiglio giusto è quello di r.chiodaroli con un solo errore, nel session_end non può essere fatto nessun redirect in quanto non è detto che l'evento si scateni quando l'utente ha effettuato una richiesta.

Se quello che si vuole sapere è se la richiesta appartiene ad una sessione scaduta basta sfruttare la proprietà Session.IsNewSession
HTH
.

Nothing can be born from hartred

Stefano (SM15455) Mostarda
http://blogs.aspitalia.com/SM15455
Rome Italy
25 messaggi dal 23 gennaio 2006
Ho risolto (provvisoriamente) in questo modo, partendo dal suggerimento di r.chiodaroli ho creato il file global.asax ed invece di inserire il redirect nell'evento session_end l'ho inserito nell'evento Application_Error perchè ,come specificato anche da SM15455, il redirect nell'evento session_end non funziona.
L'effetto ottenuto è quello che volevo anche se adesso non so se il redirect è stato effettuato perchè la sessione è scaduta o per un qualsiasi altro Application_Error.
Grazie a tutti per i suggerimenti
25 messaggi dal 23 gennaio 2006
SOLUZIONE DEFINITIVA:
Mettendo insieme i suggerimenti di r.chidaroli e di SM15455 sono giunto a questa soluzione che credo sia ottimale:

Ho creato il file global.asax e nell'evento "Application_Error" ho inserito le seguenti istruzioni

if (Session.IsNewSession)
{
HttpContext.Current.Response.Redirect("Scaduto.aspx");
}

se questa soluzione contiene delle imperfezioni oppure ne conoscete una migliore non esitate a postare.
Grazie per l'aiuto.
Carmine Pacifico
637 messaggi dal 12 agosto 2005
Da un punto di vista teorico, non mi sembra corretto, perché Application_Error viene scatenato quando viene sollevata un'eccezione e questa non è stata "catchata" altrove. Non credo abbia pertinenza con Session. Se lei afferma che però ciò funziona, mi sorgono dei dubbi sul runtime di ASP.NET...
r.chiodaroli wrote_
Da un punto di vista teorico, non mi sembra corretto, perché Application_Error viene scatenato quando viene sollevata un'eccezione e questa non è stata "catchata" altrove. Non credo abbia pertinenza con Session. Se lei afferma che però ciò funziona, mi sorgono dei dubbi sul runtime di ASP.NET...

probabilmente funziona solo perchè cerca di accedere a Session["nomecampo"] magari richiamando .ToString(), che scatena una bella eccezione non gestista perchè è nullo.
alquanto fallace come tecnica, in realtà, c'è di meglio, tipo verifica che un dato campo sia valorizzato nel'evento BeginRequest di HttpApplication e nel caso fare lì il redirect.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.