ASP.NET munkamenet-kezelés [Példa]

⚡ Okos összefoglaló

Az ASP.NET munkamenet-kezelés lehetővé teszi az állapot nélküli HTTP alkalmazások számára, hogy megjegyezzék a felhasználói adatokat a kérések között. Bemutatja a ViewState-et, a kulcs-érték párok tárolására szolgáló Session objektumot, egy működő példát, a munkamenet-állapot módokat, az időtúllépés konfigurációját és a munkamenet-állapot előnyeit.

  • 🌐 Állapot nélküli HTTP: A HTTP nem őrzi meg az adatokat a kérések között, ezért az ASP.NET mechanizmusokat ad hozzá az állapot megőrzésére.
  • 🗂️ NézetÁllapot: A ViewState automatikusan átviszi a vezérlőértékeket egyik oldalról a másikra.
  • 🔑 Munkamenet objektum: A Session[„Key”] kulcs-érték párokat tárol és kér le az alkalmazás életciklusa során.
  • 🇧🇷 Állapotmódok: A munkamenet állapota tárolható InProc-ban, StateServeren, SQL Serveren vagy egyéni tárolóban.
  • ⏱️ Időtúllépés: A web.config fájlban található sessionState időtúllépés szabályozza, hogy egy munkamenet mennyi ideig marad életben.

ASP.NET munkamenet-kezelési oktatóanyag példával

ASP.NET Session Management

A HTTP-protokoll, amelyen minden webalkalmazás működik, állapot nélküli protokoll. A hontalanság csak azt jelenti, hogy az információkat nem őrzik meg egyik kérésről a másikra.

Például, ha volt egy bejelentkezési oldala, amelyen 2 szövegmező található, az egyik a név, a másik a jelszó számára. Amikor az oldalon a Bejelentkezés gombra kattint, az alkalmazásnak biztosítania kell, hogy a felhasználónév és a jelszó átkerüljön a következő oldalra.

Az ASP.Net-ben ezt többféleképpen is megtehetik. Az első módszer a ViewState nevű koncepció. Itt tárolja az ASP.Net automatikusan az összes vezérlőelem tartalmát. Azt is biztosítja, hogy ez átkerüljön a következő oldalra. Ezt a ViewState nevű tulajdonságon keresztül teszi.

Nem ideális a fejlesztőnek, ha bármit is megváltoztat a nézet állapotában. Ez azért van, mert csak az ASP.Net-nek kell kezelnie.

ASP.NET Session objektum

A másik módszer egy „Session Object” nevű objektum használata. A Session objektum az alkalmazás teljes életciklusa alatt elérhető. A Session objektumban tetszőleges számú kulcs-érték pár tárolható. Így bármelyik oldalon tárolhat egy értéket a Session objektumban az alábbi kódsoron keresztül.

Session["Key"] = value

Ez egy Session objektumban tárolja az értéket, és a „key” rész segítségével nevet adunk az értéknek. Ez lehetővé teszi az érték későbbi lekérését. Egy érték lekéréséhez egyszerűen kiadhatjuk az alábbi utasítást.

Session["Key"]

ASP.NET Session objektum Példa

A példánkban a Session objektumot fogjuk használni az oldalon a név szövegmezőbe beírt név tárolására. Ezután ezt az értéket fogjuk lekérni, és ennek megfelelően megjeleníteni az oldalon. Adjuk hozzá az alábbi kódot a Demo.aspx.cs fájlhoz.

Használja a munkamenet objektumot

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 Magyarázat:-

  1. A kód első sora a Name szövegmező vezérlőelem értékét a Session objektumban tárolja. A Session[„Name”] kódjának megadásával a tulajdonságnak egy „Name” nevű nevet adunk. A tulajdonság nevének megadásával könnyebben előhívható később.
  2. A következő kódsor lekéri a tárolt értéket a Session objektumból. Ezt az értéket a 'Response.Write' metódussal visszaírja az ügyfélnek.
  3. Végül láthatatlanná tesszük az űrlapon található összes vezérlőt. Ha ezt nem tesszük meg, akkor az összes vezérlő és a válaszértékeink együtt jelennek meg.

Miután elvégezte a fenti módosításokat, a következő kimenetet fogja látni.

output:

Használja a munkamenet objektumot

A kimenetből láthatja, hogy a name Session értékét lekérték és megjelenítették a böngészőben.

ASP.NET munkamenet-állapot módok

Az ASP.NET több helyen is képes tárolni a munkamenet-adatokat, ezeket munkamenet-állapot módoknak nevezzük. A választott mód befolyásolja a teljesítményt, a skálázhatóságot, és azt, hogy az adatok túlélik-e az alkalmazás újraindítását. Az alábbi táblázat összehasonlítja ezeket:

Mód Hol tárolja az állapotot A legjobb
InProc A webszerver memóriájában (alapértelmezett) Egyszerveres alkalmazások; leggyorsabb, de újraindításkor elveszik
Állapotkiszolgáló Egy különálló ASP.NET állapotszolgáltatási folyamat Webfarmok; túléli az alkalmazás újraindítását
SQL szerver Egy SQL Server adatbázis A webfarmoknak tartós, skálázható állapotra van szükségük
szokás Egyéni szolgáltató, amelyet Ön valósít meg Speciális üzletek, mint például a Redis
le Munkamenet állapota letiltva Alkalmazások, amelyek nem igényelnek munkamenetet

Az InProc az alapértelmezett és a leggyorsabb, de terheléselosztott telepítések esetén a StateServer vagy az SQLServer több szerveren is elérhetővé teszi a munkameneteket.

Hogyan konfigurálható a munkamenet időtúllépése az ASP.NET-ben

Egy munkamenet nem tart örökké; egy bizonyos inaktivitási időszak után lejár. Ezt az időkorlátot a web.config fájlban állíthatja be a sessionState elem használatával, ahol az időkorlát értéke percekben van megadva:

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

Kódban is beállíthatod a következővel: Session.Timeout = 30;Az alapértelmezett időkorlát 20 perc. Rövidebb időkorlát választása gyorsabban szabadítja fel a szerver memóriáját és javítja a biztonságot, míg hosszabb időkorlát esetén a felhasználók hosszabb ideig maradnak bejelentkezve.

A munkamenet-állapot előnyei és hátrányai

A munkamenet-állapot kényelmes, de vannak olyan kompromisszumok, amelyeket mérlegelni kell, mielőtt túlzottan támaszkodunk rá.

Előnyök:

  • Egyszerűen használható felhasználónkénti adatok, például egy üzlet adatainak tárolásáraping kosár vagy bejelentkezési adatok.
  • Komplex objektumokat is képes tárolni, nem csak karakterláncokat.
  • Az adatokat a szerveren tárolják, így biztonságosabbak, mint a kliensoldali tárolás.

Hátrányok:

  • Az InProc mód szervermemóriát fogyaszt, és nem skálázható webfarmon belül.
  • A munkamenet-adatok elvesznek, ha a munkamenet időtúllépést okoz, vagy az alkalmazás újraindul (InProc módban).
  • A felhasználónkénti nagy mennyiségű adat tárolása nagy terhelés alatt ronthatja a teljesítményt.

GYIK

Igen. A mesterséges intelligencia asszisztensek képesek kódot generálni a munkamenet-értékek tárolásához és olvasásához, javaslatot tenni a megfelelő állapotmódra, és megírni a web.config beállításokat. RevTekintse meg a generált kódot, és ellenőrizze, hogy megfelel-e a skálázhatósági és biztonsági igényeinek.

Igen. A mesterséges intelligencia alapú kódfelülvizsgálati eszközök képesek olyan kockázatokat jelezni, mint a munkamenet-rögzítés, a hiányzó, csak HTTPS-alapú sütik vagy a bizalmas adatok munkamenetben történő tárolása. Az eredményeket iránymutatásként kezelje, és a telepítés előtt biztonsági teszteléssel erősítse meg a javításokat.

A munkamenet-állapot egyetlen felhasználó munkamenetéhez tartozó adatokat tárol, míg az alkalmazás állapota az alkalmazás összes felhasználója által megosztott adatokat tárolja. A munkamenet állapotot felhasználónkénti értékekhez, az alkalmazás állapotot pedig globális adatokhoz, például számlálókhoz vagy konfigurációhoz használja.

Nem. Minden felhasználó külön munkamenetet kap, amelyet egy sütiben tárolt egyedi munkamenet-azonosító azonosít. Egyik felhasználó sem tudja elolvasni egy másik felhasználó munkamenet-értékeit, ezért a munkamenetet felhasználónkénti adatokhoz használják.

Foglald össze ezt a bejegyzést a következőképpen: