Programmering

Sådan arbejder du med sessioner i ASP.Net

HTTP er en statsløs protokol. Dette betyder, at hver gang en ny anmodning sendes fra klienten til serveren, går statusoplysningerne for den tidligere anmodning tabt. Der er flere måder at gemme og administrere tilstand på ASP.Net. Sessionsobjekt er en af ​​dem, de andre er cache- og applikationsobjekter.

Caching forbedrer applikationens ydeevne ved at minimere ressourceforbruget i dit system. Du kan gemme ofte anvendte data eller websider for at forbedre applikationens ydeevne og kapacitet og skalerbarhed ved at reducere forbruget af serverens ressourcer.

Du kan definere session som en session med forbindelse mellem serveren og klienten - sessionsobjektet indeholder data, der svarer til en brugers session. Session er en teknik til styring af serversiden, der bruges til at gemme brugerspecifik information i hukommelsen til senere hentning.

Tilstande til lagring af sessionsdata

Sessionsobjektet oprettes og administreres på serversiden. Sessionlagertilstand bestemmer, hvor dine sessionsdata skal gemmes. Sessionstilstand kan gemmes i en af ​​følgende tilstande:

  1. In-Process: Opbevares i den samme ASP.Net-proces
  2. Statsserver: Gemt i et andet system
  3. SQL Server: Opbevares i SQLServer-databasen
  4. Brugerdefineret: dette giver dig mulighed for at gemme sessionsdata ved hjælp af en brugerdefineret lagerudbyder

In-Proc-tilstand til lagring af sessionsdata er standardtilstand, og den er også den hurtigste af alle de tilgængelige lagertilstande. I denne tilstand gemmes sessionsdataene i serverens hukommelse - inde i ASP.Net-arbejdsprocessen. Du skal bruge denne tilstand, hvis mængden af ​​data, der skal gemmes i sessionen, er mindre, og hvis du ikke har brug for, at dataene vedvares. Det skal bemærkes, at sessionsdata, der er gemt i denne tilstand, er ustabile, dvs. så snart sessionen afsluttes, går sessionsdataene tabt. Så data i sessionen er tilgængelige, så længe sessionen er i live.

I tilstanden State Server gemmes sessionsdataene i en separat proces - dette kaldes ASP.Net State Service. Med andre ord lagres sessionsdata i denne tilstand uden for ASP.Net-arbejdsprocessen eller applikationspuljen i IIS. I modsætning til In-Proc-tilstand bevares sessionsdata i tilstanden State Server, dvs. de går ikke tabt, efter at din webapplikation er genstartet.

Følgende kodestykke illustrerer, hvordan du kan konfigurere sessionstilstand i din applikation til at blive gemt i denne tilstand.

 

   

stateConnectionString = "tcpip = Server: 1234"

cookieless = "falsk"

timeout = "20" />

 

SQLServer-tilstanden til sessionsdatalagring bruges til at fastholde sessionsdata for din applikation i SQLServer-databasen. Svarende til tilstandsservertilstanden for sessionsdatalagring giver SQLServer-tilstanden dig også mulighed for at opretholde sessionsdata i din applikation på tværs af genstart af programmet. Bemærk, at du skal sikre, at ASP.Net-sessionsstatusdatabasen oprettes, før du bruger denne tilstand. Du kan oprette denne database ved hjælp af kommandolinjeprogrammet Aspnet_regsql.exe.

Følgende kodestykke viser, hvordan du kan konfigurere din applikation til at gemme sessionsdata i en SQLServer-database.

 

   

sqlConnectionString = "datakilde = server; bruger-id = joydip; adgangskode = sa1 @ 3"

cookieless = "false" timeout = "20" />

 

Understøttelse af session datakomprimering

Microsofts ASP.Net 4 introducerede en ny funktion: sessionstilstandskomprimering. Med ASP.Net 4 og fremover kan du udnytte denne indbyggede funktion til at komprimere sessionsdata til lagring af processer uden for processen. For at udnytte denne funktion er alt, hvad du skal gøre, at indstille attributten compressionEnabled til "true" i konfigurationsfilen i din applikation. Følgende kodestykke illustrerer, hvordan dette kan konfigureres.

<>

mode = "SQLServer"

stateConnectionString = "en eller anden forbindelsesstreng ..."

compressionEnabled = "true" />

Sessionstilstand giver dig mulighed for at gemme brugerspecifikke data i hukommelsen og identificere en bestemt anmodning entydigt. Sessionsdata gemmes som nøgle / værdipar i SessionStateItemCollection og kan tilgås ved hjælp af egenskaben HttpContext.Session.

Følgende kodeeksempler viser, hvordan du kan gemme og hente sessionsdata.

HttpSessionState.Session ["UserName"] = "John"; // gemmer sessionsdata

streng str = HttpSessionState.Session ["Brugernavn"]. ToString ();

// Henter sessionsdata

HttpSessionState.Remove ("Nøgle til fjernelse");

// Fjerner et objekt fra sessionstilstanden