ASP.NET-istunnonhallinta [Esimerkki]

โšก ร„lykรคs yhteenveto

ASP.NET-istunnonhallinnan avulla tilaton HTTP-sovellus voi muistaa kรคyttรคjรคtiedot pyyntรถjen vรคlillรค. Se selittรครค ViewStaten, avain-arvo-parien tallentamiseen tarkoitetun Session-objektin, toimivan esimerkin, istunnon tilatilat, aikakatkaisun mรครคrityksen ja istunnon tilan edut.

  • ๐ŸŒ Tilaton HTTP: HTTP ei sรคilytรค tietoja pyyntรถjen vรคlillรค, joten ASP.NET lisรครค mekanismeja tilan sรคilyttรคmiseksi.
  • ๐Ÿ—‚๏ธ Nรคkymรคtila: ViewState siirtรครค automaattisesti ohjausobjektien arvot sivulta toiselle.
  • ๐Ÿ”‘ Istunto-objekti: Session[โ€œKeyโ€] tallentaa ja hakee avain-arvo-pareja sovelluksen elinkaaren ajan.
  • โš™๏ธ Tilatilat: Istunnon tila voidaan tallentaa InProc-sรคilรถssรค, StateServer-palvelimella, SQL Serverissรค tai mukautettuun sรคilรถรถn.
  • โฑ๏ธ Aikakatkaisu: web.config-tiedostossa oleva sessionState-aikakatkaisu mรครคrittรครค, kuinka kauan istunto pysyy aktiivisena.

ASP.NET-istunnonhallinnan opetusohjelma esimerkin kanssa

ASP.NET-istunnonhallinta

HTTP-protokolla, jolla kaikki verkkosovellukset toimivat, on tilaton protokolla. Valtiottomalla se tarkoittaa vain sitรค, ettรค tietoja ei sรคilytetรค pyynnรถstรค toiseen.

Jos sinulla oli esimerkiksi kirjautumissivu, jossa on 2 tekstiruutua, toinen nimelle ja toinen salasanalle. Kun napsautat kyseisen sivun Kirjaudu-painiketta, sovelluksen on varmistettava, ettรค kรคyttรคjรคtunnus ja salasana vรคlitetรครคn seuraavalle sivulle.

ASP.Netissรค tรคmรค tehdรครคn useilla eri tavoilla. Ensimmรคinen tapa on ViewState-nimisen konseptin kautta. Tรคhรคn ASP.Net tallentaa automaattisesti kaikkien ohjausobjektien sisรคllรถn. Se varmistaa myรถs, ettรค tรคmรค vรคlitetรครคn seuraavalle sivulle. Tรคmรค tehdรครคn ViewState-nimisen ominaisuuden avulla.

Kehittรคjรคn ei ole ihanteellinen muuttaa mitรครคn nรคkymรคtilassa. Tรคmรค johtuu siitรค, ettรค vain ASP.Netin pitรคisi kรคsitellรค sitรค.

ASP.NET-istuntoobjekti

Toinen tapa on kรคyttรครค objektia nimeltรค "Session Object". Istunto-objekti on kรคytettรคvissรค sovelluksen koko elinkaaren ajan. Voit tallentaa minkรค tahansa mรครคrรคn avain-arvo-pareja Istunto-objektiin. Joten millรค tahansa sivulla voit tallentaa arvon Istunto-objektiin alla olevan koodirivin kautta.

Session["Key"] = value

Tรคmรค tallentaa arvon Session-objektiin, ja 'key'-osaa kรคytetรครคn arvon nimen antamiseen. Tรคmรค mahdollistaa arvon hakemisen myรถhemmin. Voit hakea arvon yksinkertaisesti antamalla alla olevan lauseen.

Session["Key"]

Esimerkki ASP.NET-istuntoobjektista

Esimerkissรคmme kรคytรคmme Session-objektia tallentaaksemme sivun nimi-tekstikenttรครคn syรถtetyn nimen. Sitten noudamme kyseisen arvon ja nรคytรคmme sen sivulla vastaavasti. Lisรคtรครคn alla oleva koodi Demo.aspx.cs-tiedostoon.

Kรคytรค istuntoobjektia

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

  1. Ensimmรคinen koodirivi ottaa Name-tekstiruudun arvon ja tallentaa sen Session-objektiin. Mรครคrittรคmรคllรค Session[โ€œNameโ€]-koodin annamme ominaisuudelle nimen nimeltรค โ€Nameโ€. Mรครคrittรคmรคllรค ominaisuudelle nimen sen hakeminen myรถhemmin helpottuu.
  2. Seuraava koodirivi hakee tallennetun arvon Istunto-objektista. Sitten se kirjoittaa tรคmรคn arvon takaisin asiakkaalle Response.Write-menetelmรคn kautta.
  3. Lopuksi teemme kaikista lomakkeen ohjausobjekteista nรคkymรคttรถmiรค. Jos emme tee tรคtรค, kaikki ohjausobjektit ja vastausarvomme nรคytetรครคn yhdessรค.

Kun olet tehnyt yllรค olevat muutokset, nรคet seuraavan tulosteen.

lรคhtรถ:

Kรคytรค istuntoobjektia

Tulosteesta nรคet, ettรค nimen Session-arvo haettiin ja nรคytettiin selaimessa.

ASP.NET-istunnon tilatilat

ASP.NET voi tallentaa istuntotietoja useisiin paikkoihin, joita kutsutaan istuntotilatiloiksi. Valitsemasi tila vaikuttaa suorituskykyyn, skaalautuvuuteen ja siihen, sรคilyvรคtkรถ tiedot sovelluksen uudelleenkรคynnistyksen jรคlkeen. Alla oleva taulukko vertailee niitรค:

tila Missรค tila tallennetaan Parasta
InProc Verkkopalvelimen muistissa (oletus) Yhden palvelimen sovellukset; nopein, mutta katoaa uudelleenkรคynnistyksen yhteydessรค
StateServer Erillinen ASP.NET State Service -prosessi Verkkofarmit; selviรครค sovelluksen uudelleenkรคynnistyksestรค
SQLServer SQL Server -tietokanta Verkkofarmit tarvitsevat kestรคvรคn ja skaalautuvan tilan
Mittatilaus Mukautettu palveluntarjoaja, jonka otat kรคyttรถรถn Erikoisliikkeet, kuten Redis
pois Istunnon tila poistettu kรคytรถstรค Sovellukset, jotka eivรคt tarvitse istuntoja

InProc on oletusarvoinen ja nopein tapa, mutta kuormituksen tasaavissa kรคyttรถรถnottoissa StateServer tai SQLServer pitรครค istunnot saatavilla useilla palvelimilla.

Istunnon aikakatkaisun mรครคrittรคminen ASP.NET:ssรค

Istunto ei kestรค ikuisesti; se vanhenee tietyn kรคyttรคmรคttรถmyysajan jรคlkeen. Voit asettaa tรคmรคn aikakatkaisun web.config-tiedostossa kรคyttรคmรคllรค sessionState-elementtiรค, jossa aikakatkaisun arvo on minuutteina:

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

Voit asettaa sen myรถs koodissa Session.Timeout = 30;Oletusarvoinen aikakatkaisu on 20 minuuttia. Lyhyemmรคn aikakatkaisun valitseminen vapauttaa palvelimen muistia nopeammin ja parantaa tietoturvaa, kun taas pidempi aikakatkaisu pitรครค kรคyttรคjรคt kirjautuneina sisรครคn pidempรครคn.

Istuntotilan edut ja haitat

Istuntotila on kรคtevรค, mutta sillรค on omat haittapuolensa, jotka kannattaa punnita ennen kuin siihen vahvasti luottaa.

edut:

  • Helppokรคyttรถinen kรคyttรคjรคkohtaisten tietojen, kuten myymรคlรคn, tallentamiseenping ostoskori tai kirjautumistiedot.
  • Voi tallentaa monimutkaisia โ€‹โ€‹objekteja, ei vain merkkijonoja.
  • Tiedot tallennetaan palvelimelle, joten ne ovat turvallisempia kuin asiakaspuolen tallennus.

Haitat:

  • InProc-tila kuluttaa palvelimen muistia eikรค skaalaudu web-farmin yli.
  • Istuntotiedot menetetรครคn, kun istunto aikakatkaistaan โ€‹โ€‹tai sovellus kรคynnistyy uudelleen (InProc-tilassa).
  • Suurten tietomรครคrien tallentaminen kรคyttรคjรครค kohden voi heikentรครค suorituskykyรค raskaan kuormituksen aikana.

UKK

Kyllรค. Tekoรคlyavustajat voivat luoda koodin istuntoarvojen tallentamiseen ja lukemiseen, ehdottaa oikeaa tilatilaa ja kirjoittaa web.config-asetukset. RevTarkista luotu koodi varmistaaksesi, ettรค se sopii skaalautuvuus- ja tietoturvatarpeisiisi.

Kyllรค. Tekoรคlypohjaiset koodin tarkistustyรถkalut voivat merkitรค riskejรค, kuten istunnon jumiutumisen, puuttuvat HTTPS-evรคsteet tai arkaluonteisten tietojen tallentamisen istuntoon. Pidรค havaintoja ohjeina ja vahvista korjaukset tietoturvatestauksella ennen kรคyttรถรถnottoa.

Istuntotila tallentaa tietoja yksittรคisen kรคyttรคjรคn istunnosta, kun taas Sovellustila tallentaa kaikkien sovelluksen kรคyttรคjien jakamia tietoja. Kรคytรค Istunto-tilaa kรคyttรคjรคkohtaisille arvoille ja Sovellus-tilaa globaaleille tiedoille, kuten laskureille tai kokoonpanolle.

Ei. Jokainen kรคyttรคjรค saa erillisen istunnon, joka tunnistetaan evรคsteeseen tallennetulla yksilรถllisellรค istuntotunnuksella. Yksi kรคyttรคjรค ei voi lukea toisen kรคyttรคjรคn istuntoarvoja, minkรค vuoksi istuntotunnusta kรคytetรครคn kรคyttรคjรคkohtaisiin tietoihin.

Tiivistรค tรคmรค viesti seuraavasti: