Logo UGIdotNET

Discussione 'Session_End - strano comportamento'

# Pubblicato il 26 dic 2009 15.27 - Rispondi
Davide Musumeci
Session_End - strano comportamento
Salve a tutti. Ho un problema che mi ha già fatto perdere 2 giorni...in qualche modo l'ho risolto ma non mi spiego come mai - avendo spulciato ovunque in rete (forse sto invecchiando :)) - accada.

La dinamica riguarda le sessioni ed è la seguente:

1) WebConfig:

<sessionState mode="InProc" cookieless="UseCookies" timeout="20" />

2) I soliti handler nel global.asax Session_Start e Session_End

3) Al Logout:

Session.Clear();
Session.Abandon();
FormsAuthentication.SignOut();
Response.Redirect("Index.aspx");

Risultato: al redirect alla pagina riutilizzo del medesimo SessionID com'è normale che sia...ma...oltre al "Session_start" che viene richiamato in quanto nuova sessione viene anche richiamato durante il ciclo di vita della richiesta anche il "Session_End" come se la sessione venisse avviata e poi resettata.

Ciò accade anche in ulteriori request o postback...stesso comportamento..."Session_start" parte e poi segue anche "Session_End" che invece quest'ultimo non dovrebbe seguire!

Nel codice che ho controllato migliaia di volta non c'è nulla che resetti la sessione e induca ad esser chiamato l'handler Session_End tranne il Session.Abandon() che è chiamato solo al Logout.

Questo l'ho risolto così:

Session.Clear();
Session.Abandon();
*** Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));***
FormsAuthentication.SignOut();
Response.Redirect("Index.aspx");

Resettando il SessionID tutto funge come dovrebbe e viene alle successive richiesta, redirect compreso, chiamato solo il Session_Start SENZA il Session_End alla fine!!! Tutto questo è alquanto strano e da nessuna parte sembra esservi una minimo accenno tranne qui http://forums.asp.net/t/1441221.aspx ma niente di risolutivo.

Sembra che il vecchio SessionID non venga affatto riciclato come dovrebbe essere ma venga rigettato! E questo non è esposto da nessuna parte come comportamento previsto. Inoltre optando per la mia soluzione di cui sopra...quando le sessioni scadono in modo autonomo e viene chiamato il Session_End, ovviamente il SessionID non viene ripristinato autonomamente e quindi un utente che stà fermo mettiamo 30 minuti lasciando però aperta la sessione del browser e poi a sessione scaduta, ritorna a navigare ecco che lo strano comportamento torna in "essere"...quindi ad ogni richiesta mi chiama SEMPRE il Session_End per cui tutto il codice che ho lì viene eseguito in modo inappropriato facendomi sballare tutto (vedi ad esempio il conteggio degli utenti..)

Ho provato pure su IIS e non solo sul server di sviluppo...medesimo comportamento; ho tolto l'antivirus, medesimo comportamento.

Ma che diavolo è!?

100 euro a chi svela l'arcano!! ;)
# Pubblicato il 01 gen 2010 23.29 - Rispondi
Lorenzo Moretti
Re: Session_End - strano comportamento
Ciao,
hai poi trovato la soluzione che cercavi?

Il comportamento "anomalo" avviene anche senza usare i cookies?

Lorenzo
# Pubblicato il 11 gen 2010 16.13 - Rispondi
Davide Musumeci
Re: Session_End - strano comportamento
Ciao Lorenzo...beh diciamo che ho trovato una sorta di workaround che a me funziona...ad altri - che confermano il medesimo problema - no!!!

Ti dò il link del post sul forum ufficiale di asp.net:

http://forums.asp.net/t/1507805.aspx

Resta cmq ancora un mistero tutto ciò :)

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185