Kako raditi sa Sessions u ASP.Net

HTTP je protokol bez državljanstva. To podrazumijeva da se svaki put kada se novi zahtjev pošalje od klijenta na poslužitelj informacije o stanju prethodnog zahtjeva izgube. Postoji nekoliko načina za pohranu i upravljanje stanjem u ASP.Net. Objekt sesije jedan je od njih, a drugi su objekti keširanja i primjene.

Keširanje poboljšava izvedbu aplikacije minimizirajući potrošnju resursa u vašem sustavu. Možete pohraniti često korištene podatke ili web stranice kako biste poboljšali performanse i protok aplikacije te skalabilnost smanjenjem potrošnje resursa poslužitelja.

Sesiju možete definirati kao sesiju povezivanja između poslužitelja i klijenta - objekt sesije sadrži podatke koji odgovaraju korisničkoj sesiji. Sesija je tehnika upravljanja stanjem na strani poslužitelja koja se koristi za pohranu korisničkih podataka u memoriju za kasnije dohvaćanje.

Načini pohrane podataka sesije

Objekt sesije kreira se i njime se upravlja na strani poslužitelja. Način pohrane sesije određuje gdje se podaci vaše sesije trebaju pohraniti. Stanje sesije može se pohraniti u jedan od sljedećih načina:

  1. U procesu: pohranjeno u istom ASP.Net procesu
  2. Državni poslužitelj: pohranjen u nekom drugom sustavu
  3. SQL Server: pohranjen u bazi podataka SQLServer
  4. Prilagođeno: ovo vam omogućuje pohranu podataka o sesiji pomoću prilagođenog davatelja usluge pohrane

Način pohrane podataka sesija In-Proc zadani je način i ujedno je najbrži od svih dostupnih načina pohrane. U ovom načinu rada podaci sesije pohranjuju se u memoriju poslužitelja - unutar radnog procesa ASP.Net. Trebali biste koristiti ovaj način ako je količina podataka koja treba biti pohranjena u sesiji manja i ako vam podaci ne bi trebali biti trajni. Treba imati na umu da su podaci sesije pohranjeni u ovom načinu rada nestabilni, tj. Čim se sesija prekine, podaci sesije se gube. Dakle, podaci u sesiji dostupni su sve dok je sesija živa.

U načinu državnog poslužitelja podaci sesije pohranjuju se u zasebnom procesu - to se naziva ASP.Net državna usluga. Drugim riječima, podaci sesije u ovom načinu pohranjuju se izvan radnog procesa ASP.Net ili spremišta aplikacija u IIS-u. Za razliku od načina rada In-Proc, podaci sesije u načinu poslužitelja države se čuvaju, tj. Ne gube se nakon ponovnog pokretanja vaše web aplikacije.

Sljedeći isječak koda ilustrira kako možete konfigurirati stanje sesije u svojoj aplikaciji da bude pohranjeno u ovom načinu.

 

   

      stateConnectionString="tcpip=Server:1234"

      cookieless="false"

      timeout="20"/>

 

The SQLServer mode of session data storage is used to persist session data of your application in the SQLServer database. Similar to the State Server mode of session data storage, the SQLServer mode also enables you to persist session data of your application across application restarts. Note that you should ensure that the ASP.Net session state database is created before using this mode. You can create this database using the Aspnet_regsql.exe command line utility.

The following code snippet shows how you can configure your application to store session data in a SQLServer database.

 

   

       sqlConnectionString="data source=server;user id=joydip;[email protected]"

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

 

Support for Session data compression

Microsoft's ASP.Net 4 introduced a new feature: session state compression. With ASP.Net 4 and onward, you can leverage this built-in feature to compress session data for storing out-of-process sessions. To take advantage of this feature, all you need to do is set the compressionEnabled attribute to "true" in the configuration file of your application. The following code snippet illustrates how this can be configured.

  mode="SQLServer"

  stateConnectionString="some connection string..."

  compressionEnabled="true"/>

Session state enables you to store user specific data in the memory and identify a particular request uniquely.  Session data is stored as key/value pairs in the SessionStateItemCollection and can be accessed using the HttpContext.Session property.

The following code examples show how you can store and retrieve session data.

HttpSessionState.Session["UserName"] = "John"; //stores session data

string str = HttpSessionState.Session["UserName"].ToString();

// Retrieves session data

HttpSessionState.Remove("Key to remove");

//Removes an object from the session state