Gestione delle sessioni ASP.NET [Esempio]
โก Riepilogo intelligente
ASP.NET Session Management consente a un'applicazione HTTP stateless di memorizzare i dati dell'utente tra le richieste. Questo documento illustra ViewState, l'oggetto Session per la memorizzazione di coppie chiave-valore, fornisce un esempio pratico, spiega le modalitร di gestione dello stato della sessione, la configurazione del timeout e illustra i vantaggi dello stato della sessione.
Gestione delle sessioni ASP.NET
Il protocollo HTTP su cui funzionano tutte le applicazioni web รจ un protocollo stateless. Per apolide significa semplicemente che le informazioni non vengono conservate da una richiesta all'altra.
Ad esempio, se hai una pagina di login con 2 caselle di testo, una per il nome e l'altra per la password. Quando clicchi sul pulsante Login in quella pagina, l'applicazione deve assicurarsi che username e password vengano passati alla pagina successiva.
In ASP.Net, questo viene fatto in diversi modi. Il primo รจ tramite un concetto chiamato ViewState. ร qui che ASP.Net memorizza automaticamente il contenuto di tutti i controlli. Si assicura inoltre che questo venga passato alla pagina successiva. Questo viene fatto tramite una proprietร chiamata ViewState.
Non รจ l'ideale per uno sviluppatore modificare qualcosa nello stato di visualizzazione. Questo perchรฉ dovrebbe essere gestito solo da ASP.Net.
Oggetto sessione ASP.NET
Lโaltro modo รจ utilizzare un oggetto chiamato โSession Objectโ. L'oggetto Session รจ disponibile per tutto il ciclo di vita dell'applicazione. ร possibile memorizzare un numero qualsiasi di coppie chiave-valore nell'oggetto Session. Pertanto, su qualsiasi pagina, puoi memorizzare un valore nell'oggetto Session tramite la riga di codice sottostante.
Session["Key"] = value
Questo memorizza il valore in un oggetto Session e la parte 'key' viene utilizzata per assegnare un nome al valore. Ciรฒ consente di recuperare il valore in un secondo momento. Per recuperare un valore, รจ sufficiente eseguire l'istruzione seguente.
Session["Key"]
Esempio di oggetto sessione ASP.NET
Nel nostro esempio, useremo l'oggetto Session per memorizzare il nome inserito nel campo di testo "Nome" della pagina. Successivamente, recupereremo tale valore e lo visualizzeremo sulla pagina di conseguenza. Aggiungiamo il codice seguente al file Demo.aspx.cs.
protected void btnSubmit_Click(object sender, EventArgs e) { Session["Name"] = txtName.Text; Response.Write(Session["Name"]); lblName.Visible = false; txtName.Visible = false; lstLocation.Visible = false; chkC.Visible = false; chkASP.Visible = false; rdMale.Visible = false; rdFemale.Visible = false; btnSubmit.Visible = false; }
Code Spiegazione:-
- La prima riga di codice prende il valore del controllo della casella di testo Nome e lo memorizza nell'oggetto Session. Specificando il codice di Session["Nome"], assegniamo alla proprietร il nome "Nome". Specificando un nome per la proprietร , diventa piรน facile recuperarla in un secondo momento.
- La riga successiva di codice recupera il valore memorizzato dall'oggetto Session. Quindi riscrive questo valore sul client tramite il metodo "Response.Write".
- Infine, rendiamo invisibili tutti i controlli del modulo. Se non lo facciamo, tutti i controlli e i valori di risposta saranno visualizzati insieme.
Una volta apportate le modifiche di cui sopra, visualizzerai il seguente output.
Produzione:
Dall'output, puoi vedere che il valore Session di name รจ stato recuperato e visualizzato nel browser.
Modalitร di stato della sessione ASP.NET
ASP.NET puรฒ memorizzare i dati di sessione in diverse posizioni, denominate modalitร di stato della sessione. La modalitร scelta influisce sulle prestazioni, sulla scalabilitร e sulla persistenza dei dati al riavvio dell'applicazione. La tabella seguente le confronta:
| Moda | Dove viene memorizzato lo stato | migliori per |
|---|---|---|
| InProc | Nella memoria del server web (impostazione predefinita) | Applicazioni a server singolo: le piรน veloci, ma perse al riavvio. |
| Server di stato | Un processo separato del servizio di stato ASP.NET | Web farm; sopravvive ai riavvii dell'applicazione |
| Server SQL | Un database SQL Server | Le farm web necessitano di uno stato durevole e scalabile |
| Custom | Un provider personalizzato che implementi | Negozi specializzati come Redis |
| sconto | Stato della sessione disabilitato | Applicazioni che non necessitano di sessioni |
InProc รจ l'impostazione predefinita e la piรน veloce, ma per le implementazioni con bilanciamento del carico, StateServer o SQLServer mantengono le sessioni disponibili su piรน server.
Come configurare il timeout di sessione in ASP.NET
Una sessione non dura indefinitamente; scade dopo un periodo di inattivitร . ร possibile impostare questo timeout nel file web.config utilizzando l'elemento sessionState, dove il valore di timeout รจ espresso in minuti:
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
ร possibile impostarlo anche nel codice con Session.Timeout = 30;Il timeout predefinito รจ di 20 minuti. Scegliendo un timeout piรน breve, la memoria del server viene liberata piรน rapidamente e la sicurezza migliora, mentre un timeout piรน lungo mantiene gli utenti connessi per un periodo maggiore.
Vantaggi e svantaggi dello Stato di sessione
Lo stato di sessione รจ comodo, ma presenta dei compromessi che รจ bene valutare prima di farvi affidamento in modo significativo.
vantaggi:
- Semplice da usare per memorizzare dati per utente come un negozioping Dati del carrello o di accesso.
- Puรฒ memorizzare oggetti complessi, non solo stringhe.
- I dati vengono conservati sul server, quindi sono piรน sicuri rispetto all'archiviazione lato client.
svantaggi:
- La modalitร InProc consuma memoria del server e non รจ scalabile su un'intera web farm.
- I dati della sessione vengono persi quando la sessione scade o l'applicazione viene riavviata (in modalitร InProc).
- L'archiviazione di grandi quantitร di dati per utente puรฒ compromettere le prestazioni in condizioni di carico elevato.



