pasqua1981 ha scritto:
se svariati utenti sono collegati al mio sito da diverse parti d'italia, non potrà mai accadere che due o più di loro abbiano lo stesso Session ID
Esatto: questo rischio non esiste (salvo eventuali falle nella sicurezza del web server)
In pratica il sistema funziona così (semplifico molto, non prenderlo come process diagram di iis, è puramente indicativo!): quando un utente apre una nuova sessione di navigazione il web server gli assegna un numero univoco (tipo GUID) e lo "associa" al client in forma di cookie non persistente (cookie di sessione). Ad ogni richiesta successiva il server riconosce il client tramite questo 'biscottino' e accede alle corrispondenti variabili di sessione.
I dati salvati in sessione sono "accessibili" solo dal client corripondente (nonostante siano nella memoria del server, comune a tutti gli utenti)
Puoi immaginare le variabili di sessione come un dictionary che a sua volta contiene per ogni chiave (la sessionID) un altro dictionary (i "nomi" delle variabili di sessione):
{memoria del server}
.|-- {Sessione["SessionID_1"]}
....|--- Session["Variabile_1"] = valore1
....|--- Session["Variabile_2"] = valore2
.|-- {Sessione["SessionID_2"]}
....|--- Session["Variabile_1"] = valore3
....|--- Session["Variabile_2"] = valore4
In pratica quando richiedi Session("MiaVariabile") dietro le quinte il server recuperi il lavoro attraversando la gerarchia in questo modo: TutteLeSessioni(CurrentUser.SessionID)("MiaVariabile")
Spero di averti un po' chiarito le idee e rassicurato sull'impossibilità che due utenti "si vedano" le rispettive sessioni (considera che la sessione è spesso usata per salvare i dati di login: se non fosse univoca avremmo la possibilità di far vedere a un utente i dati di qualcun altro...)