Upravljanje ASP.NET sesijama [Primjer]

⚡ Pametni sažetak

Upravljanje ASP.NET sesijama omogućuje HTTP aplikaciji bez stanja pamćenje korisničkih podataka kroz zahtjeve. Objašnjava ViewState, objekt Session za pohranjivanje parova ključ-vrijednost, radni primjer, načine stanja sesije, konfiguraciju vremenskog ograničenja i prednosti stanja sesije.

  • 🌐 HTTP bez stanja: HTTP ne zadržava podatke između zahtjeva, pa ASP.NET dodaje mehanizme za očuvanje stanja.
  • 🗂️ Prikaz stanja: ViewState automatski prenosi kontrolne vrijednosti s jedne stranice na sljedeću.
  • 🔑 Objekt sesije: Sesija[“Ključ”] pohranjuje i dohvaća parove ključ-vrijednost tijekom životnog ciklusa aplikacije.
  • Načini stanja: Stanje sesije može se pohraniti u Proc-u, na StateServeru, u SQL Serveru ili u prilagođenom spremištu.
  • 🇧🇷 Vremensko ograničenje: Vremensko ograničenje sessionState u web.config kontrolira koliko dugo sesija ostaje aktivna.

Vodič za upravljanje ASP.NET sesijama s primjerom

ASP.NET upravljanje sesijama

HTTP protokol na kojem rade sve web aplikacije je protokol bez stanja. Bez državljanstva, to samo znači da se podaci ne zadržavaju od jednog zahtjeva do drugog.

Na primjer, ako imate stranicu za prijavu koja ima 2 tekstualna okvira, jedan za ime, a drugi za lozinku. Kada kliknete gumb Prijava na toj stranici, aplikacija mora osigurati da korisničko ime i lozinka budu proslijeđeni na sljedeću stranicu.

U ASP.Net-u se to radi na razne načine. Prvi način je putem koncepta koji se zove ViewState. Ovdje ASP.Net automatski pohranjuje sadržaj svih kontrola. Također osigurava da se to prenese na sljedeću stranicu. To se radi putem svojstva koje se zove ViewState.

Nije idealno da programer mijenja bilo što u stanju prikaza. To je zato što njime treba upravljati samo ASP.Net.

Objekt ASP.NET sesije

Drugi način je korištenje objekta koji se zove "Objekt sesije". Objekt Sesije dostupan je tijekom cijelog životnog ciklusa aplikacije. U objekt sesije možete pohraniti bilo koji broj parova ključ-vrijednost. Dakle, na bilo kojoj stranici možete pohraniti vrijednost u objekt sesije putem donjeg retka koda.

Session["Key"] = value

Ovo pohranjuje vrijednost u objekt Session, a dio 'ključ' se koristi za davanje imena vrijednosti. To omogućuje dohvaćanje vrijednosti u kasnijem trenutku. Za dohvaćanje vrijednosti možete jednostavno izdati sljedeću naredbu.

Session["Key"]

Primjer ASP.NET objekta sesije

U našem primjeru, koristit ćemo objekt Session za pohranu imena unesenog u polje za naziv na stranici. Zatim ćemo dohvatiti tu vrijednost i prikazati je na stranici u skladu s tim. Dodajmo donji kod u datoteku Demo.aspx.cs.

Koristite objekt sesije

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 Obrazloženje:-

  1. Prvi redak koda uzima vrijednost kontrole tekstualnog okvira Name i pohranjuje je u objekt Session. Određivanjem koda Session[“Name”], dajemo svojstvu naziv pod nazivom “Name”. Određivanjem naziva za svojstvo, lakše ga je dohvatiti kasnije.
  2. Sljedeći redak koda dohvaća pohranjenu vrijednost iz Session objekta. Zatim zapisuje ovu vrijednost putem metode 'Response.Write' natrag klijentu.
  3. Konačno, sve kontrole na obrascu činimo nevidljivima. Ako to ne učinimo, sve kontrole i vrijednosti naših odgovora bit će prikazane zajedno.

Nakon što napravite gore navedene promjene, vidjet ćete sljedeći izlaz.

Izlaz:

Koristite objekt sesije

Iz izlaza možete vidjeti da je vrijednost sesije imena dohvaćena i prikazana u pregledniku.

Načini stanja ASP.NET sesije

ASP.NET može pohranjivati ​​podatke sesije na nekoliko mjesta, koja se nazivaju načini stanja sesije. Način koji odaberete utječe na performanse, skalabilnost i hoće li podaci preživjeti ponovno pokretanje aplikacije. Tablica u nastavku ih uspoređuje:

način Gdje se pohranjuje stanje Najbolje za
Ulazni postupak U memoriji web poslužitelja (zadano) Aplikacije za jedan poslužitelj; najbrže, ali se gube pri ponovnom pokretanju
StateServer Zaseban proces ASP.NET State Servicea Web farme; preživljava ponovna pokretanja aplikacija
SQLServer Baza podataka SQL Servera Web farme kojima je potrebno izdržljivo i skalabilno stanje
običaj Prilagođeni pružatelj usluga kojeg implementirate Specijalizirane trgovine poput Redisa
od Stanje sesije onemogućeno Aplikacije koje ne trebaju sesije

InProc je zadani i najbrži, ali za implementacije s uravnoteženim opterećenjem, StateServer ili SQLServer održava sesije dostupnima na više poslužitelja.

Kako konfigurirati vremensko ograničenje sesije u ASP.NET-u

Sesija ne traje vječno; istječe nakon razdoblja neaktivnosti. Ovo vremensko ograničenje možete postaviti u datoteci web.config pomoću elementa sessionState, gdje je vrijednost vremenskog ograničenja u minutama:

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

Također ga možete postaviti u kodu s Session.Timeout = 30;Zadano vrijeme čekanja je 20 minuta. Odabirom kraćeg vremena čekanja brže se oslobađa memorija poslužitelja i poboljšava sigurnost, dok dulje vrijeme čekanja korisnika dulje ostaje prijavljenima.

Prednosti i nedostaci stanja sesije

Stanje sesije je praktično, ali ima kompromise koje biste trebali odvagnuti prije nego što se na njega uvelike oslonite.

Prednosti:

  • Jednostavno za korištenje za pohranjivanje podataka po korisniku, kao što je trgovinaping podatke za košaricu ili prijavu.
  • Može pohranjivati ​​složene objekte, ne samo stringove.
  • Podaci se čuvaju na poslužitelju, pa je sigurnije od pohrane na strani klijenta.

Nedostaci:

  • InProc način rada troši memoriju poslužitelja i ne skalira se unutar web farme.
  • Podaci sesije gube se kada sesija istekne ili kada se aplikacija ponovno pokrene (u InProc načinu rada).
  • Pohranjivanje velikih količina podataka po korisniku može negativno utjecati na performanse pod velikim opterećenjem.

Pitanja i odgovori

Da. AI asistenti mogu generirati kod za pohranu i čitanje vrijednosti sesije, predložiti ispravan način stanja i zapisati postavke web.config. RevPogledajte generirani kod kako biste potvrdili da odgovara vašim potrebama skalabilnosti i sigurnosti.

Da. Alati za pregled koda temeljeni na umjetnoj inteligenciji mogu označiti rizike poput fiksiranja sesije, nedostajućih kolačića samo za HTTPS ili pohranjivanja osjetljivih podataka u sesiji. Nalaze tretirajte kao smjernice i potvrdite ispravke sigurnosnim testiranjem prije implementacije.

Stanje sesije pohranjuje podatke za sesiju jednog korisnika, dok stanje aplikacije pohranjuje podatke koje dijele svi korisnici aplikacije. Koristite sesiju za vrijednosti po korisniku, a aplikaciju za globalne podatke poput brojača ili konfiguracije.

Ne. Svaki korisnik dobiva zasebnu sesiju, identificiranu jedinstvenim ID-om sesije pohranjenim u kolačiću. Jedan korisnik ne može čitati vrijednosti sesije drugog korisnika, zbog čega se Sesija koristi za podatke po korisniku.

Sažmite ovu objavu uz: