Gestionarea sesiunilor ASP.NET [Exemplu]

⚡ Rezumat inteligent

ASP.NET Session Management permite unei aplicații HTTP fără stare să rețină datele utilizatorilor în cadrul cererilor. Acesta explică ViewState, obiectul Session pentru stocarea perechilor cheie-valoare, un exemplu funcțional, modurile de stare a sesiunii, configurarea timeout-ului și avantajele stării sesiunii.

  • 🌐 HTTP fără stare: HTTP nu reține datele între cereri, așa că ASP.NET adaugă mecanisme pentru a păstra starea.
  • 🗂️ Stare de vizualizare: ViewState transportă automat valorile de control de la o pagină la alta.
  • 🔑 Obiect de sesiune: Session[„Key”] stochează și preia perechi cheie-valoare pe tot parcursul ciclului de viață al aplicației.
  • ⚙️ Moduri de stare: Starea sesiunii poate fi stocată în Proc, pe un StateServer, în SQL Server sau într-un depozit personalizat.
  • ⏱️ Pauză: Timeout-ul sessionState din web.config controlează durata de viață a unei sesiuni.

Tutorial de gestionare a sesiunilor ASP.NET cu exemplu

Managementul sesiunii ASP.NET

Protocolul HTTP pe care funcționează toate aplicațiile web este un protocol fără stat. Prin apatrid, înseamnă doar că informațiile nu sunt reținute de la o cerere la alta.

De exemplu, dacă ați avut o pagină de conectare care are 2 casete text, una pentru nume și cealaltă pentru parolă. Când faceți clic pe butonul Conectare de pe pagina respectivă, aplicația trebuie să se asigure că numele de utilizator și parola sunt transmise pe pagina următoare.

În ASP.Net, acest lucru se realizează în diverse moduri. Prima modalitate este prin intermediul unui concept numit ViewState. Aici ASP.Net stochează automat conținutul tuturor controalelor. De asemenea, se asigură că acesta este transmis paginii următoare. Acest lucru se face prin intermediul unei proprietăți numite ViewState.

Nu este ideal ca un dezvoltator să schimbe ceva în starea de vizualizare. Acest lucru se datorează faptului că ar trebui să fie gestionat numai de ASP.Net.

Obiect de sesiune ASP.NET

Cealaltă modalitate este să utilizați un obiect numit „Obiect de sesiune”. Obiectul Session este disponibil pe tot parcursul ciclului de viață al aplicației. Puteți stoca orice număr de perechi cheie-valoare în obiectul Session. Deci, pe orice pagină, puteți stoca o valoare în obiectul Session prin linia de cod de mai jos.

Session["Key"] = value

Aceasta stochează valoarea într-un obiect Session, iar partea „cheie” este utilizată pentru a da un nume valorii. Aceasta permite recuperarea valorii ulterior. Pentru a recupera o valoare, puteți pur și simplu să executați instrucțiunea de mai jos.

Session["Key"]

Obiect de sesiune ASP.NET Exemplu

În exemplul nostru, vom folosi obiectul Session pentru a stoca numele introdus în câmpul text name de pe pagină. Apoi vom recupera acea valoare și o vom afișa pe pagină în mod corespunzător. Să adăugăm codul de mai jos în fișierul Demo.aspx.cs.

Utilizați obiectul sesiune

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 Explicaţie:-

  1. Prima linie de cod preia valoarea controlului textbox Name și o stochează în obiectul Session. Prin specificarea codului Session[„Name”], atribuim proprietății un nume numit „Name”. Prin specificarea unui nume pentru proprietate, devine mai ușor să o regăsiți ulterior.
  2. Următoarea linie de cod preia valoarea stocată din obiectul Session. Apoi scrie această valoare prin metoda „Response.Write” înapoi către client.
  3. În cele din urmă, facem toate controalele din formular invizibile. Dacă nu facem acest lucru, toate controalele plus valorile noastre de răspuns vor fi afișate împreună.

După ce faceți modificările de mai sus, veți vedea următorul rezultat.

ieșire:

Utilizați obiectul sesiune

Din rezultat, puteți vedea că valoarea Session a numelui a fost preluată și afișată în browser.

Moduri de stare a sesiunii ASP.NET

ASP.NET poate stoca date de sesiune în mai multe locuri, numite moduri de stare a sesiunii. Modul ales afectează performanța, scalabilitatea și dacă datele supraviețuiesc unei reporniri a aplicației. Tabelul de mai jos le compară:

mod Unde este stocată starea Cel mai bun pentru
În proces În memoria serverului web (implicit) Aplicații cu un singur server; cele mai rapide, dar se pierd la repornire
StateServer Un proces separat de serviciu de stare ASP.NET Ferme web; supraviețuiește repornirii aplicațiilor
SQL Server O bază de date SQL Server Fermele web au nevoie de o stare durabilă și scalabilă
pachet personalizat Un furnizor personalizat pe care îl implementați Magazine specializate precum Redis
de pe Starea sesiunii este dezactivată Aplicații care nu necesită sesiuni

InProc este implicit și cel mai rapid, dar pentru implementările cu sarcină echilibrată, StateServer sau SQLServer menține sesiunile disponibile pe mai multe servere.

Cum se configurează expirarea sesiunii în ASP.NET

O sesiune nu durează la nesfârșit; expiră după o perioadă de inactivitate. Puteți seta acest timeout în fișierul web.config folosind elementul sessionState, unde valoarea timeout-ului este în minute:

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="20" />
  </system.web>
</configuration>

De asemenea, îl puteți seta în cod cu Session.Timeout = 30;Timpul de expirare implicit este de 20 de minute. Alegerea unui timeout mai scurt eliberează mai rapid memoria serverului și îmbunătățește securitatea, în timp ce un timeout mai lung menține utilizatorii conectați mai mult timp.

Avantajele și dezavantajele stării sesiunii

Starea sesiunii este convenabilă, dar are compromisuri pe care ar trebui să le evaluați înainte de a vă baza prea mult pe ea.

avantaje:

  • Ușor de utilizat pentru stocarea datelor per utilizator, cum ar fi un magazinping coș sau detalii de autentificare.
  • Poate stoca obiecte complexe, nu doar șiruri de caractere.
  • Datele sunt păstrate pe server, deci este mai sigur decât stocarea pe partea clientului.

Dezavantaje:

  • Modul InProc consumă memorie pe server și nu se scalează pe o fermă web.
  • Datele sesiunii se pierd când sesiunea expiră sau aplicația repornește (în modul InProc).
  • Stocarea unor cantități mari de date per utilizator poate afecta performanța sub sarcină intensă.

Întrebări frecvente

Da. Asistenții inteligenți artificiali pot genera codul pentru stocarea și citirea valorilor sesiunii, pot sugera modul de stare corect și pot scrie setările web.config. RevVizualizați codul generat pentru a confirma că se potrivește nevoilor dvs. de scalabilitate și securitate.

Da. Instrumentele de revizuire a codului bazate pe inteligență artificială pot semnala riscuri precum remedierea erorilor de sesiune, lipsa cookie-urilor HTTPS exclusive sau stocarea datelor sensibile în sesiune. Tratați constatările ca îndrumări și confirmați remedierile cu teste de securitate înainte de implementare.

Starea sesiunii stochează datele pentru sesiunea unui singur utilizator, în timp ce starea aplicației stochează datele partajate de toți utilizatorii aplicației. Folosiți Sesiunea pentru valorile per utilizator și Aplicația pentru date globale, cum ar fi contoare sau configurație.

Nu. Fiecare utilizator primește o sesiune separată, identificată printr-un ID de sesiune unic stocat într-un cookie. Un utilizator nu poate citi valorile sesiunii unui alt utilizator, motiv pentru care se folosește Sesiunea pentru datele per utilizator.

Rezumați această postare cu: