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.
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.
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:-
- 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.
- Seuraava koodirivi hakee tallennetun arvon Istunto-objektista. Sitten se kirjoittaa tรคmรคn arvon takaisin asiakkaalle Response.Write-menetelmรคn kautta.
- 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รถ:
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.



