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.
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.
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:-
- 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.
- 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.
- 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:
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.



