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.
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.
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:-
- 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.
- Următoarea linie de cod preia valoarea stocată din obiectul Session. Apoi scrie această valoare prin metoda „Response.Write” înapoi către client.
- Î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:
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ă.



