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.

  • 🌐 Kodakondsuseta HTTP: HTTP ei säilita andmeid päringute vahel, seega lisab ASP.NET mehhanisme oleku säilitamiseks.
  • 🗂️ Vaateolek: ViewState kannab juhtväärtusi automaatselt ühelt lehelt teisele.
  • 🔑 Seansi objekt: Sessioon[„Key”] salvestab ja otsib võtme-väärtuse paare kogu rakenduse elutsükli vältel.
  • ⚙️ Oleku režiimid: Seansi olekut saab salvestada protsessis (InProc), olekuserveris (StateServer), SQL Serveris või kohandatud salves.
  • Aegumistähtaeg: Seansi kehtivusaja määramiseks web.config failis oleva seansiState ajalõpu parameetri abil määratakse seansi kehtivusaja pikkus.

ASP.NET seansihalduse õpetus näitega

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.

Kasutage seansiobjekti

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

  1. 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.
  2. Järgmine koodirida hangib seansiobjektilt salvestatud väärtuse. Seejärel kirjutab see selle väärtuse meetodi „Response.Write” kaudu kliendile tagasi.
  3. 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:

Kasutage seansiobjekti

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.

KKK

Jah. Tehisintellekti assistendid saavad genereerida koodi seansi väärtuste salvestamiseks ja lugemiseks, soovitada õiget olekurežiimi ja kirjutada web.config sätted. RevVaadake genereeritud koodi, et veenduda selle sobivuses teie skaleeritavuse ja turvalisuse vajadustega.

Jah. Tehisintellektil põhinevad koodiülevaatuse tööriistad suudavad tuvastada riske, nagu seansi fikseerimine, puuduvad ainult HTTPS-küpsised või tundlike andmete salvestamine seansi ajal. Käsitlege tulemusi suunistena ja kinnitage parandused enne juurutamist turvatestimisega.

Seansi olek salvestab andmeid ühe kasutaja seansi kohta, samas kui rakenduse olek salvestab andmeid, mida jagavad kõik rakenduse kasutajad. Kasutage seansi olekut kasutajapõhiste väärtuste jaoks ja rakenduse olekut globaalsete andmete (nt loendurid või konfiguratsioon) jaoks.

Ei. Iga kasutaja saab eraldi seansi, mida tähistab küpsises talletatud unikaalne seansi ID. Üks kasutaja ei saa lugeda teise kasutaja seansi väärtusi, mistõttu kasutatakse seansi kasutajapõhiste andmete jaoks.

Võta see postitus kokku järgmiselt: