Programmēšana

Kā strādāt ar sesijām ASP.Net

HTTP ir bezvalstnieks. Tas nozīmē, ka katru reizi, kad no klienta uz serveri tiek nosūtīts jauns pieprasījums, tiek zaudēta iepriekšējā pieprasījuma valsts informācija. Ir vairāki veidi, kā saglabāt un pārvaldīt stāvokli ASP.Net. Sesijas objekts ir viens no tiem, pārējie ir kešatmiņas un lietojumprogrammas objekti.

Kešatmiņa uzlabo lietojumprogrammas veiktspēju, samazinot resursu patēriņu jūsu sistēmā. Varat saglabāt bieži lietotus datus vai Web lapas, lai uzlabotu lietojumprogrammas veiktspēju, caurlaidi un mērogojamību, samazinot servera resursu patēriņu.

Sesiju var definēt kā savienojuma sesiju starp serveri un klientu - sesijas objektā ir dati, kas atbilst lietotāja sesijai. Sesija ir servera puses stāvokļa pārvaldības tehnika, kas tiek izmantota, lai glabātu atmiņā lietotājam specifisku informāciju, lai to vēlāk izgūtu.

Sesijas datu glabāšanas režīmi

Sesijas objekts tiek izveidots un pārvaldīts servera pusē. Sesijas krātuves režīms nosaka, kur jāsaglabā jūsu sesijas dati. Sesijas stāvokli var saglabāt vienā no šiem režīmiem:

  1. Procesā: glabājas tajā pašā ASP.Net procesā
  2. Valsts serveris: glabājas kādā citā sistēmā
  3. SQL Server: glabājas SQLServer datu bāzē
  4. Pielāgots: tas ļauj saglabāt sesijas datus, izmantojot pielāgotu krātuves nodrošinātāju

Sesijas datu glabāšanas režīms In-Proc ir noklusējuma režīms, un tas ir arī ātrākais no visiem pieejamajiem krātuves režīmiem. Šajā režīmā sesijas dati tiek glabāti servera atmiņā - ASP.Net darbinieka procesā. Jums vajadzētu izmantot šo režīmu, ja sesijā ir jāsaglabā mazāks datu apjoms un ja dati nav jāsaglabā. Jāatzīmē, ka šajā režīmā saglabātie sesijas dati ir nepastāvīgi, t.i., tiklīdz sesija tiek pārtraukta, sesijas dati tiek zaudēti. Tātad dati sesijā ir pieejami, kamēr sesija ir dzīva.

Valsts servera režīmā sesijas dati tiek glabāti atsevišķā procesā - to sauc par ASP.Net valsts pakalpojumu. Citiem vārdiem sakot, sesijas dati šajā režīmā tiek glabāti ārpus ASP.Net darbinieka procesa vai lietojumprogrammu kopas IIS. Atšķirībā no režīmā In-Proc, sesijas dati valsts servera režīmā tiek saglabāti, t.i., tie netiek zaudēti pēc jūsu tīmekļa lietojumprogrammas restartēšanas.

Šis koda fragments parāda, kā jūs varat konfigurēt sesijas stāvokli savā lietojumprogrammā glabāšanai šajā režīmā.

 

   

stateConnectionString = "tcpip = Serveris: 1234"

cookieless = "false"

taimauts = "20" />

 

Sesijas datu krātuves SQLServer režīms tiek izmantots, lai saglabātu lietojumprogrammas sesijas datus SQLServer datu bāzē. Līdzīgi kā sesijas datu glabāšanas režīmā State Server, arī SQLServer režīms ļauj saglabāt programmas lietojumprogrammas sesijas datus visā programmas restartēšanas laikā. Ņemiet vērā, ka pirms šī režīma izmantošanas ir jāpārliecinās, ka sesijas stāvokļa datu bāze ASP.Net ir izveidota. Šo datu bāzi varat izveidot, izmantojot komandrindas utilītu Aspnet_regsql.exe.

Šis koda fragments parāda, kā varat konfigurēt lietojumprogrammu sesiju datu glabāšanai SQLServer datu bāzē.

 

   

sqlConnectionString = "datu avots = serveris; lietotāja ID = joydip; parole = sa1 @ 3"

cookieless = "false" taimauts = "20" />

 

Atbalsts sesijas datu saspiešanai

Microsoft ASP.Net 4 ieviesa jaunu funkciju: sesijas stāvokļa saspiešanu. Izmantojot ASP.Net 4 un jaunākus, varat izmantot šo iebūvēto funkciju, lai saspiestu sesijas datus ārpus procesa sesiju glabāšanai. Lai izmantotu šo funkciju, viss, kas jums jādara, ir jūsu lietojumprogrammas konfigurācijas failā iestatīt atribūtu compressionEnabled uz "true". Šis koda fragments parāda, kā to var konfigurēt.

<>

mode = "SQLServer"

stateConnectionString = "kāda savienojuma virkne ..."

compressionEnabled = "true" />

Sesijas stāvoklis ļauj saglabāt atmiņā lietotājam specifiskus datus un unikāli identificēt konkrētu pieprasījumu. Sesijas dati tiek glabāti kā atslēgu / vērtību pāri SessionStateItemCollection un tiem var piekļūt, izmantojot rekvizītu HttpContext.Session.

Šie kodu piemēri parāda, kā jūs varat saglabāt un izgūt sesijas datus.

HttpSessionState.Session ["UserName"] = "John"; // saglabā sesijas datus

virkne str = HttpSessionState.Session ["Lietotājvārds"]. ToString ();

// Izgūst sesijas datus

HttpSessionState.Remove ("Atslēga noņemšanai");

// Noņem sesijas stāvokļa objektu

$config[zx-auto] not found$config[zx-overlay] not found