ASP.NET Sessionsstyring [Eksempel]

โšก Smart opsummering

ASP.NET Session Management lader en statslรธs HTTP-applikation huske brugerdata pรฅ tvรฆrs af anmodninger. Det forklarer ViewState, Session-objektet til lagring af nรธgle-vรฆrdi-par, et fungerende eksempel, sessionstilstandstilstande, timeout-konfiguration og fordelene ved sessionstilstand.

  • ๐ŸŒ Statslรธs HTTP: HTTP gemmer ikke data mellem anmodninger, sรฅ ASP.NET tilfรธjer mekanismer til at bevare tilstanden.
  • ๐Ÿ—‚๏ธ Visningstilstand: ViewState overfรธrer automatisk kontrolvรฆrdier fra รฉn side til den nรฆste.
  • ๐Ÿ”‘ Sessionsobjekt: Session["Nรธgle"] gemmer og henter nรธgle-vรฆrdi-par gennem hele applikationens livscyklus.
  • ๐Ÿ‡ง๐Ÿ‡ท Tilstandstilstande: Sessionstilstanden kan gemmes InProc, pรฅ en StateServer, i SQL Server eller i et brugerdefineret lager.
  • โฑ๏ธ Timeout: Timeout'en for sessionState i web.config styrer, hvor lรฆnge en session forbliver aktiv.

ASP.NET sessionsstyringsvejledning med eksempel

ASP.NET Sessionsstyring

HTTP-protokollen, som alle webapplikationer fungerer pรฅ, er en statslรธs protokol. Ved statslรธs betyder det blot, at oplysninger ikke opbevares fra en anmodning til en anden.

For eksempel, hvis du havde en login-side, som har 2 tekstbokse, en for navnet og den anden for adgangskoden. Nรฅr du klikker pรฅ Login-knappen pรฅ den side, skal applikationen sikre, at brugernavnet og adgangskoden sendes videre til nรฆste side.

I ASP.Net gรธres dette pรฅ en rรฆkke forskellige mรฅder. Den fรธrste mรฅde er via et koncept kaldet ViewState. Det er her, ASP.Net automatisk gemmer indholdet af alle kontrolelementerne. Det sikrer ogsรฅ, at dette sendes videre til den nรฆste side. Dette gรธres via en egenskab kaldet ViewState.

Det er ikke ideelt for en udvikler at รฆndre noget i visningstilstanden. Dette skyldes, at det kun skal hรฅndteres af ASP.Net.

ASP.NET Session objekt

Den anden mรฅde er at bruge et objekt kaldet et "sessionsobjekt". Session-objektet er tilgรฆngeligt i hele applikationens livscyklus. Du kan gemme et hvilket som helst antal nรธglevรฆrdi-par i Session-objektet. Sรฅ pรฅ enhver side kan du gemme en vรฆrdi i Session-objektet via nedenstรฅende kodelinje.

Session["Key"] = value

Dette gemmer vรฆrdien i et Session-objekt, og 'nรธgle'-delen bruges til at give vรฆrdien et navn. Dette gรธr det muligt at hente vรฆrdien pรฅ et senere tidspunkt. For at hente en vรฆrdi kan du blot udfรธre nedenstรฅende sรฆtning.

Session["Key"]

ASP.NET Session objekt Eksempel

I vores eksempel bruger vi Session-objektet til at gemme det navn, der er indtastet i tekstfeltet "navn" pรฅ siden. Vi henter derefter vรฆrdien og viser den pรฅ siden i overensstemmelse hermed. Lad os tilfรธje nedenstรฅende kode til Demo.aspx.cs-filen.

Brug sessionsobjektet

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

  1. Den fรธrste kodelinje tager vรฆrdien fra tekstbokskontrollen Navn og gemmer den i Session-objektet. Ved at angive koden Session["Navn"] giver vi egenskaben et navn kaldet "Navn". Ved at angive et navn til egenskaben bliver det nemmere at hente den pรฅ et senere tidspunkt.
  2. Den nรฆste kodelinje henter den lagrede vรฆrdi fra Session-objektet. Den skriver derefter denne vรฆrdi via 'Response.Write' metoden tilbage til klienten.
  3. Til sidst gรธr vi alle kontrolelementerne pรฅ formularen usynlige. Hvis vi ikke gรธr dette, vil alle kontrolelementerne plus vores svarvรฆrdier blive vist sammen.

Nรฅr du har foretaget ovenstรฅende รฆndringer, vil du se fรธlgende output.

Output:

Brug sessionsobjektet

Fra outputtet kan du se, at sessionsvรฆrdien for navnet blev hentet og vist i browseren.

ASP.NET-sessionstilstande

ASP.NET kan gemme sessionsdata flere steder, kaldet sessionstilstande. Den valgte tilstand pรฅvirker ydeevne, skalerbarhed og om data overlever en genstart af applikationen. Tabellen nedenfor sammenligner dem:

tilstand Hvor tilstanden er gemt Bedste for
InProc I webserverens hukommelse (standard) Enkeltserver-apps; hurtigst, men tabt ved genstart
StateServer En separat ASP.NET State Service-proces Webfarme; overlever genstart af applikationer
SQLServer En SQL Server-database Webfarme har brug for en holdbar, skalerbar tilstand
Tilpasset En brugerdefineret udbyder, du implementerer Specialbutikker som Redis
af Sessionstilstand deaktiveret Applikationer, der ikke krรฆver sessioner

InProc er standarden og den hurtigste, men til load-balanced implementeringer holder StateServer eller SQLServer sessioner tilgรฆngelige pรฅ tvรฆrs af flere servere.

Sรฅdan konfigurerer du sessionstimeout i ASP.NET

En session varer ikke evigt; den udlรธber efter en periode med inaktivitet. Du kan indstille denne timeout i web.config-filen ved hjรฆlp af sessionState-elementet, hvor timeout-vรฆrdien er i minutter:

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

Du kan ogsรฅ indstille det i kode med Session.Timeout = 30;Standard timeout er 20 minutter. Valg af en kortere timeout frigรธr serverhukommelse hurtigere og forbedrer sikkerheden, mens en lรฆngere timeout holder brugerne logget ind i lรฆngere tid.

Fordele og ulemper ved sessionstilstand

Sessionstilstanden er praktisk, men den har kompromiser, du bรธr afveje, fรธr du er i stor grad afhรฆngig af den.

fordele:

  • Nem at bruge til lagring af brugerdata, f.eks. en butikping indkรธbskurv eller loginoplysninger.
  • Kan gemme komplekse objekter, ikke kun strenge.
  • Data opbevares pรฅ serveren, sรฅ det er mere sikkert end klientsidelagring.

Ulemper:

  • InProc-tilstand forbruger serverhukommelse og skalerer ikke pรฅ tvรฆrs af en webfarm.
  • Sessionsdata gรฅr tabt, nรฅr sessionen fรฅr timeout, eller applikationen genstartes (i InProc-tilstand).
  • Lagring af store mรฆngder data pr. bruger kan forringe ydeevnen under tung belastning.

Ofte Stillede Spรธrgsmรฅl

Ja. AI-assistenter kan generere koden til at gemme og lรฆse sessionsvรฆrdier, foreslรฅ den korrekte tilstandstilstand og skrive web.config-indstillingerne. RevSe den genererede kode for at bekrรฆfte, at den passer til dine skalerbarheds- og sikkerhedsbehov.

Ja. AI-baserede kodegennemgangsvรฆrktรธjer kan markere risici sรฅsom sessionsfiksering, manglende HTTPS-cookies eller lagring af fรธlsomme data i sessioner. Betragt resultaterne som vejledning, og bekrรฆft rettelser med sikkerhedstest fรธr implementering.

Sessionstilstand gemmer data for en enkelt brugers session, mens applikationstilstand gemmer data, der deles af alle brugere af applikationen. Brug Session til vรฆrdier pr. bruger og Applikation til globale data sรฅsom tรฆllere eller konfiguration.

Nej. Hver bruger fรฅr en separat session, identificeret af et unikt sessions-ID gemt i en cookie. En bruger kan ikke lรฆse en anden brugers sessionsvรฆrdier, hvilket er grunden til, at Session bruges til data pr. bruger.

Opsummer dette indlรฆg med: