Ohjelmointi

Kuinka työskennellä istuntojen kanssa ASP.Netissä

HTTP on valtioton protokolla. Tämä tarkoittaa, että aina kun uusi pyyntö lähetetään asiakkaalta palvelimelle, edellisen pyynnön tilatiedot menetetään. ASP.Net-tilassa on useita tapoja tallentaa ja hallita tilaa. Istuntoobjekti on yksi niistä, muut ovat välimuisti- ja sovellusobjekteja.

Välimuisti parantaa sovelluksen suorituskykyä minimoimalla järjestelmän resurssien kulutuksen. Voit tallentaa usein käytettyjä tietoja tai verkkosivuja parantaaksesi sovelluksen suorituskykyä, suorituskykyä ja skaalautuvuutta vähentämällä palvelimen resurssien kulutusta.

Voit määrittää istunnon yhteyden palvelimen ja asiakkaan väliseksi istunnoksi - istuntoobjekti sisältää tietoja, jotka vastaavat käyttäjän istuntoa. Istunto on palvelinpuolen tilan hallintatekniikka, jota käytetään käyttäjäkohtaisten tietojen tallentamiseen muistiin myöhempää hakua varten.

Istuntotietojen tallennustilat

Istuntoobjekti luodaan ja hallitaan palvelinpuolella. Istunnon tallennustila määrittää, mihin istuntotietosi tulisi tallentaa. Istunnon tila voidaan tallentaa yhteen seuraavista tiloista:

  1. Prosessin sisäinen: Tallennettu samaan ASP.Net-prosessiin
  2. State Server: Tallennettu johonkin toiseen järjestelmään
  3. SQL Server: Tallennettu SQLServer-tietokantaan
  4. Mukautettu: Tämän avulla voit tallentaa istuntotiedot mukautetun tallennuspalvelun avulla

Istunnon datan tallennus In-Proc-tilassa on oletustila ja se on myös nopein kaikista käytettävissä olevista tallennustiloista. Tässä tilassa istuntotiedot tallennetaan palvelimen muistiin - ASP.Net-työntekijäprosessin sisään. Käytä tätä tilaa, jos istuntoon tallennettavien tietojen määrä on pienempi ja jos et tarvitse tietojen jatkamista. On huomattava, että tähän tilaan tallennetut istuntotiedot ovat epävakaita, ts. Heti kun istunto lopetetaan, istuntotiedot menetetään. Joten tiedot istunnosta ovat käytettävissä niin kauan kuin istunto on elossa.

Tilapalvelintilassa istuntotiedot tallennetaan erilliseen prosessiin - tätä kutsutaan ASP.Net-tilapalveluksi. Toisin sanoen istuntotiedot tässä tilassa tallennetaan ASP.Net-työntekijäprosessin tai IIS-sovellussarjan ulkopuolelle. Toisin kuin Proc-tilassa, istuntotiedot State Server -tilassa säilytetään, ts. Ne eivät häviä web-sovelluksen uudelleenkäynnistyksen jälkeen.

Seuraava koodinpätkä kuvaa, miten voit määrittää sovelluksen istunnon tilan tallennettavaksi tähän tilaan.

 

   

stateConnectionString = "tcpip = Palvelin: 1234"

cookieless = "väärä"

aikakatkaisu = "20" />

 

Istunnon tietojen tallennuksen SQLServer-tilaa käytetään sovelluksen istunnon tietojen säilyttämiseen SQLServer-tietokannassa. Samoin kuin istuntotietojen tallennuksen tilapalvelintilassa, SQLServer-tila mahdollistaa myös sovelluksesi istunnon tietojen säilyttämisen sovellusten uudelleenkäynnistyksen ajan. Huomaa, että sinun on varmistettava, että ASP.Net-istunnon tilatietokanta on luotu ennen tämän tilan käyttöä. Voit luoda tämän tietokannan Aspnet_regsql.exe-komentorivi-apuohjelmalla.

Seuraava koodinpätkä osoittaa, kuinka voit määrittää sovelluksesi tallentamaan istuntotiedot SQLServer-tietokantaan.

 

   

sqlConnectionString = "tietolähde = palvelin; käyttäjätunnus = joydip; salasana = sa1 @ 3"

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

 

Tuki istunnon tietojen pakkaamiseen

Microsoftin ASP.Net 4 esitteli uuden ominaisuuden: istunnon tilan pakkaus. ASP.Net 4: n ja sitä uudempien versioiden avulla voit hyödyntää tätä sisäänrakennettua ominaisuutta pakataksesi istuntotiedot prosessin ulkopuolisten istuntojen tallentamiseen. Tämän ominaisuuden hyödyntämiseksi sinun tarvitsee vain asettaa compressionEnabled-määritteeksi "true" sovelluksesi määritystiedostossa. Seuraava koodinpätkä kuvaa, kuinka tämä voidaan määrittää.

<>

mode = "SQLServer"

stateConnectionString = "jokin yhteysmerkkijono ..."

compressionEnabled = "true" />

Istunnon tilan avulla voit tallentaa käyttäjäkohtaisia ​​tietoja muistiin ja tunnistaa tietyn pyynnön yksilöllisesti. Istunnon tiedot tallennetaan avain / arvo-pareittain SessionStateItemCollectioniin, ja niihin pääsee HttpContext.Session-ominaisuuden avulla.

Seuraavat koodiesimerkit osoittavat, kuinka voit tallentaa ja noutaa istuntotietoja.

HttpSessionState.Session ["Käyttäjänimi"] = "John"; // tallentaa istunnon tiedot

merkkijono str = HttpSessionState.Session ["Käyttäjänimi"]. ToString ();

// Hakee istuntotiedot

HttpSessionState.Remove ("Poistettava avain");

// Poistaa objektin istunnon tilasta

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