Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Leggere SessionId attivi
mercoledì 20 febbraio 2008 - 11.57
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
sarax
Profilo
| Newbie
8
messaggi | Data Invio:
mer 20 feb 2008 - 11:57
ciao a tutti,
qualcuno sa se è possibile leggere tutti i sessionId di un applicativo.
Mi spiego.
Ho un'applicazione web a cui accedono n utenti.
Ogni utente ha una sessione diversa con un suo SessionId.
Credo che asp_net si memorizzi tutti questi sessionId da qualche parte (un array?).
Sapete se è possibile ottenere i valori dei sessionId attivi, per vedere se tra questi c'è anche quello della sessione corrente?
Grazie
Sara
Ferux
Profilo
| Newbie
44
messaggi | Data Invio:
mer 20 feb 2008 - 12:16
Ciao,
non credo che sia possibile recuperare tutti i SessionID attivi, però potresti fare una mezza furbata, del tipo che ogni volta che accede un utente, inserisci in una variabile Application il suo sessionId.
Poi recuperi il valore della Application ed il gioco è fatto.
Saluti
Ing Ferux
[MCP MCAD]
sarax
Profilo
| Newbie
8
messaggi | Data Invio:
mer 20 feb 2008 - 12:29
Infatti per il momento l'ho risolta così.
Il problema si pone perchè vorrei ripulire dall'Application gli id di sessione scaduti.
Ho pensato di gestire la cosa con un timer da Global.asax:
- su Application_Start faccio partire il timer
- sull'evento Elapsed del timer faccio la pulizia.
Per sapere quali sono gli id scaduti vorrei leggere il timeout di sessione (HttpContext.Current.Session.Timeout). Però in Application_Start HttpContext.Current è null.
Pensavo che una alternativa fosse quella di leggere un (ipotetico) array con id di sessione che si crea asp_net (così evitato di dover fare questa pulizia), ma non ho trovato nulla. In più tu adesso mi confermi che probabilmente non si può fare.
Devo cercare un'altra soluzione.
Grazie
Sara
Ferux
Profilo
| Newbie
44
messaggi | Data Invio:
mer 20 feb 2008 - 12:59
Ciao,
allora l'applicazione può terminare in due modi:
1) L'utente chiude regolarmente tramite un pulsante "Log Out" la sessione e tu lato aspx scodi dall'application il SessionId
2) Chiude il browser premendo "x". Allora tu catturi l'onclose della pagina aspx e fai partire (lato client mediante javascript) una pagina logout.aspx che prende come querystring (o lo metti in un form) il sessionId e questa pagina non fa altro che scodare il sessionid e morire (window.close()). Il SesssionId lo memorizzi su un campo Hidden della pagina e lo valirizzi nell'evento onload della pagina
Spero di esserti stato di aituo
Saluti
Ing Ferux
[MCP MCAD]
sarax
Profilo
| Newbie
8
messaggi | Data Invio:
mer 20 feb 2008 - 14:30
Si, potrebbe essere una buona alternativa.
Prima di provarla però mi sono imbattuta in "Session.IsNewSession" che se ho ben capito dovrebbe dirmi se si tratta di una nuova sessione (utente che accede per la prima volta al sito) oppure no.
Se questo valore è false significa che l'id della sessione corrente non è nuovo (l'utente sta navigando sulle pagine del sito).
Se così è posso evitare di aggiungere ad Application i sessionId e, di conseguenza, non devo preoccuparmi della pulizia (e quindi evito anche il timer in Global.asax).
Hai per caso qualche info in più su Session.IsNewSession?
Grazie
Sara
Ferux
Profilo
| Newbie
44
messaggi | Data Invio:
mer 20 feb 2008 - 14:59
Ciao,
credo che Session.IsNewSession sia utile negli scenari in cui si vuol loggare o comunque gestire il fatto che una pagina è rimasta inattiva per un certo periodo di tempo. (Timeout)
Non credo che sia utile nel tuo caso. Comunque prova e fammi sapere.
Saluti
Ing Ferux
[MCP MCAD]
sarax
Profilo
| Newbie
8
messaggi | Data Invio:
mer 20 feb 2008 - 15:06
Al momento quello che mi interessa è:
- se si tratta di una nuova sessione --> faccio qualcosa
- se la sessione è la stessa --> non faccio nulla
Ora ho messo l'applicativo in produzione e vediamo cosa registra.
Certo per ulteriori sviluppi (ma su altri applicativi) questa soluzione non mi serve.
Mi spiego: devo conoscere le sessionId attive e quindi credo che sono quasi obbligata a memorizzare in Application i sessionId.
Ti farò sapere quale soluzione adotterò per lo scodamento.
Grazie
Ciao
Sara
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !