497 messaggi dal 08 febbraio 2009
Salve a tutti.

Ho fatto un po' di ricerche sul sito ma non sono riuscito a trovare una risposta definitiva: nell'evento Session_End del Global.asax è possibile avere un riferimento alla sessione che si sta chiudendo?

Perchè nelle variabili d'ambiente della sessione (Session[xxx]) memorizzo un oggetto che implementa IDisposable.

Se dalla Session_End riuscissi ad intercettare l'oggetto "Session" di riferimento, potrei chiamare il relativo metodo "Dispose".

Qualcuno mi sa dire se è possibile o meno avere tale informazione?

Grazie mille
Fai attenzione con l'utilizzo del Session_End. Questo NON scatta quando l'utente chiude il browser, ma quando la sessione scade, ovvero tipicamente quando supera il timeout configurato sul server!
Inoltre è supportato solo quando il Mode del SessionState è impostato su InProc.

http://msdn.microsoft.com/en-us/library/ie/ms178583.aspx

Gianluca
http://www.gianlucaesposito.it
497 messaggi dal 08 febbraio 2009
Grazie.

Questo lo avevo già visto (perchè come dicevo ho già cercato un po' di info in merito).
Però nella mia realtà non sembra essere un grossissimo problema (poi magari lo sarà in futuro).

Mi è venuto però un dubbio: quando richiamo "Session.Abandon" (o quando comunque scade il timeout di sessione), il .NET si occupa automaticamente di chiamare la "Dispose" degli oggetti memorizzati in Session e che implementano IDisposable?

Perchè se così fosse non avrei bisogno di quanto richiesto (volevo intercettare l'evento solo per rilasciare delle risorse, quindi anche se avveniva con un certo ritardo non era un problema grave).
JoeRuspante wrote:
Perchè se così fosse non avrei bisogno di quanto richiesto (volevo intercettare l'evento solo per rilasciare delle risorse, quindi anche se avveniva con un certo ritardo non era un problema grave).

io al posto tuo mi preoccuperei perché, per definizione, se una classe ha un metodo Dispose è probabile che faccia uso di risorse unamanaged (aka, pericolose in quanto a memory leak se non gestite opportunamente) ed eviterei alla grande di tenerle in session.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
497 messaggi dal 08 febbraio 2009
Grazie della dritta...
Per essere è una classe che non fa uso di risorse "unmanaged" (è scritta da me), però legge comunque un tot di dati da file xml, quindi ricrearla tutte le volte impiega troppo tempo.

Per cui la caricavo all'inizio della sessione e poi la tenevo in memoria. Volevo quindi riuscire ad essere sicuro di scaricarla nel momento in cui la sessione "cade" (altrimenti rischio di consumare troppa ram del server).

Però non so dove mettere la "Dispose" visto che non riesco ad intercettare il momento in cui la sessione viene distrutta
3 messaggi dal 05 aprile 2007
www.sconosciuto.it
Salve.

Mi aggiungo alla discussione perchè io ho un problema più o meno simile.
Con la differenza che quando viene chiusa la session ho bisogno obbligatoriamente di conoscere i valori delle chiavi session o application.
Non c'è un sistema per ricuperarli, tipo un evento che preceda di poco session_end (che ne so session_disposing) o qualcosa del genere?
Grazie.

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.