ASP.NET seansihaldus [Näide]
⚡ Nutikas kokkuvõte
ASP.NET seansihaldus võimaldab olekuta HTTP-rakendusel meelde jätta kasutajaandmeid päringute vahel. See selgitab ViewState'i, võtme-väärtuse paaride salvestamiseks mõeldud seansiobjekti, toimivat näidet, seansi oleku režiime, ajalõpu konfigureerimist ja seansi oleku eeliseid.
ASP.NET-i seansihaldus
HTTP-protokoll, millel kõik veebirakendused töötavad, on olekuta protokoll. Kodakondsuseta tähendab lihtsalt seda, et teavet ei säilitata ühest päringust teise.
Näiteks kui teil oli sisselogimisleht, millel on 2 tekstikasti, millest üks on nime ja teine parooli jaoks. Kui klõpsate sellel lehel nuppu Logi sisse, peab rakendus tagama, et kasutajanimi ja parool edastatakse järgmisele lehele.
ASP.Netis tehakse seda mitmel viisil. Esimene viis on ViewState'i kontseptsiooni kaudu. See on koht, kuhu ASP.Net salvestab automaatselt kõigi juhtelementide sisu. See tagab ka selle edastamise järgmisele lehele. Seda tehakse ViewState'i nimelise atribuudi kaudu.
Arendaja jaoks pole ideaalne vaate olekus midagi muuta. Seda seetõttu, et seda peaks käsitlema ainult ASP.Net.
ASP.NET Session objekt
Teine võimalus on kasutada objekti, mida nimetatakse seansiobjektiks. Seansi objekt on saadaval kogu rakenduse elutsükli jooksul. Objekti Seanss saate salvestada suvalise arvu võtme-väärtuste paare. Nii et igal lehel saate alloleva koodirea kaudu salvestada väärtuse seansiobjekti.
Session["Key"] = value
See salvestab väärtuse seansiobjekti ja 'võtme' osa kasutatakse väärtusele nime andmiseks. See võimaldab väärtust hiljem hankida. Väärtuse hankimiseks saate lihtsalt anda alloleva lause.
Session["Key"]
ASP.NET-i seansiobjekti näide
Meie näites kasutame Session-objekti lehe nime tekstiväljale sisestatud nime salvestamiseks. Seejärel hangime selle väärtuse ja kuvame selle vastavalt lehel. Lisagem allolev kood faili 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 Selgitus:-
- Esimene koodirida võtab tekstivälja juhtelemendi „Name” väärtuse ja salvestab selle objekti „Session”. Sessioni koodi „Session[„Name”]” määramisega anname atribuudile nime „Name”. Atribuudi nime määramine lihtsustab selle hilisemat hankimist.
- Järgmine koodirida hangib seansiobjektilt salvestatud väärtuse. Seejärel kirjutab see selle väärtuse meetodi „Response.Write” kaudu kliendile tagasi.
- Lõpuks muudame kõik vormil olevad juhtelemendid nähtamatuks. Kui me seda ei tee, kuvatakse kõik juhtelemendid ja meie vastuseväärtused koos.
Kui olete ülaltoodud muudatused teinud, näete järgmist väljundit.
Väljund:
Väljundist näete, et nimi seansi väärtus leiti ja kuvati brauseris.
ASP.NET seansi oleku režiimid
ASP.NET saab seansiandmeid salvestada mitmesse kohta, mida nimetatakse seansi oleku režiimideks. Valitud režiim mõjutab jõudlust, skaleeritavust ja seda, kas andmed jäävad alles pärast rakenduse taaskäivitamist. Allolev tabel võrdleb neid:
| viis | Kus olekut hoitakse | Parim on |
|---|---|---|
| InProc | Veebiserveri mälus (vaikimisi) | Ühe serveri rakendused; kiireim, aga kaob taaskäivitamisel |
| StateServer | Eraldi ASP.NET State Service'i protsess | Veebifarmid; jääb ellu rakenduste taaskäivitamisel |
| SQLServer | SQL Serveri andmebaas | Veebifarmid vajavad vastupidavat ja skaleeritavat olekut |
| tava | Kohandatud pakkuja, kelle te rakendate | Spetsialiseeritud kauplused, näiteks Redis |
| maha | Seansi olek on keelatud | Rakendused, mis ei vaja seansse |
InProc on vaikeväärtus ja kiireim, kuid koormusega tasakaalustatud juurutuste korral hoiab StateServer või SQLServer seansid saadaval mitme serveri vahel.
Kuidas seadistada seansi ajalõpp ASP.NET-is
Seanss ei kesta igavesti; see aegub pärast teatud mitteaktiivsuse perioodi. Selle ajalõpu saate määrata failis web.config, kasutades elementi sessionState, kus ajalõpu väärtus on minutites:
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
Saate selle ka koodis määrata, kasutades Session.Timeout = 30;Vaikimisi on aegumistähtaeg 20 minutit. Lühema aegumistähtaja valimine vabastab serveri mälu kiiremini ja parandab turvalisust, pikem aegumistähtaeg aga hoiab kasutajad kauem sisselogituna.
Seansi oleku eelised ja puudused
Seansi olek on mugav, kuid sellel on kompromisse, mida peaksite enne sellele tugevat lootmist kaaluma.
Plussid:
- Lihtne kasutada kasutajaandmete, näiteks poe andmete salvestamiseksping ostukorv või sisselogimisandmed.
- Saab salvestada keerukaid objekte, mitte ainult stringe.
- Andmeid hoitakse serveris, seega on see turvalisem kui kliendipoolne salvestusruum.
Puudused:
- InProc režiim tarbib serveri mälu ja ei skaleeru veebifarmi ulatuses.
- Seansi andmed lähevad kaotsi, kui seanss aegub või rakendus taaskäivitub (InProc-režiimis).
- Suure hulga andmete salvestamine kasutaja kohta võib suure koormuse korral jõudlust kahjustada.



