2011-09-04 6 views
25

Qualcuno mi suggerisce come funziona effettivamente la sessione in asp.net? Sono confuso in una parte della sessione e voglio conoscerlo brevemente per favore guidamiCome funziona la sessione in asp.net?

+2

Prova a leggere questo articolo CodeProject http://www.codeproject.com/Articles/32545/Exploring-Session-in-ASP-Net – kfuglsang

risposta

45

ASP.NET usa un cookie per tracciare gli utenti. Quando si tenta di scrivere qualcosa nella sessione per la prima volta, viene inviato un cookie al client, ad esempio ASP.NET_SessionId. Questo cookie viene inviato dal cliente su richieste successive. Grazie a questo cookie il server è in grado di identificare il client e scrivere/leggere i dati di sessione associati. È importante notare che questo cookie non è persistente (non sopravviverebbe al riavvio del browser) ed è stato emesso con il flag HttpOnly che significa che gli script client non possono accedervi.

Oltre ai cookie, è possibile configurare ASP.NET anche per utilizzare campi nascosti o aggiungere l'ID di sessione alla stringa di query su ogni richiesta.

Quindi l'idea di base dietro la sessione è che i dati effettivi vengono memorizzati da qualche parte sul server e il client invia un ID su ogni richiesta in modo che il server possa sapere dove trovare i suoi dati.

Di default ci sono 3 posti in cui i dati di sessione effettivi possono essere memorizzati:

  • in-process: la sessione è memorizzato nella memoria della domanda (più veloce, ma se si dispone di più server in un server farm non funzionerà)
  • Out-of-Proc: i dati vengono archiviati in un server separato su cui è installato il servizio di stato (i dati vengono archiviati nella memoria di una macchina separata a indicare che più server Web possono funzionare in una web farm)
  • SqlServer: i dati sono archiviati in SQL Server (è il più lento ma più affidabile dei dati di sessione è memorizzato in un database SQL Server e potrebbe essere utile se il server Session va in crash, ma non è il caso di Out-Of-Proc)
  • Implementazione personalizzata: grazie all'estensibilità di ASP.NET è possibile scrivere il proprio provider di sessione e memorizzare i dati ovunque tu voglia.

Ecco un buon articolo su MSDN che esplora lo ASP.NET Session State.

4

Sessione: [memorizzato sul lato server]

1. Se si creano i mezzi sessione, il server conserva i tuoi dati della sessione e crea un SessionID. [Dati di sessione con SessionID memorizzati nel provider di stato nel server]

2.Quando il server restituisce il SessionID al browser del client.

3. Quindi è possibile memorizzare il SessionID restituito in Cookie.

4. Prossima richiesta successiva allegata con SessionID può accedere ai Dati server.

Nota: Sessione solo per la sessione corrente del browser e specifica dell'utente.