Как се работи със сесии в ASP.Net

HTTP е протокол без гражданство. Това предполага, че при всяко изпращане на нова заявка от клиента до сървъра информацията за състоянието на предишната заявка се губи. Има няколко начина за съхраняване и управление на състоянието в ASP.Net. Обектът на сесията е един от тях, останалите са обекти за кеширане и приложение.

Кеширането подобрява производителността на приложението, като минимизира консумацията на ресурси във вашата система. Можете да съхранявате често използвани данни или уеб страници, за да подобрите производителността на приложението и производителността и мащабируемостта, като намалите консумацията на ресурси на сървъра.

Можете да определите сесията като сесия на свързаност между сървъра и клиента - обектът на сесията съдържа данни, които съответстват на сесията на потребителя. Сесията е техника за управление на състоянието от страна на сървъра, която се използва за съхраняване на специфична за потребителя информация в паметта за по-късно извличане.

Режими на съхранение на данни за сесията

Обектът на сесията се създава и управлява от страна на сървъра. Режимът на съхранение на сесията определя къде трябва да се съхраняват данните за вашата сесия. Състоянието на сесията може да се съхранява в един от следните режими:

  1. В процес - Съхранява се в същия процес ASP.Net
  2. Държавен сървър: Съхранява се в друга система
  3. SQL Server: Съхранява се в базата данни SQLServer
  4. Потребителски: това ви позволява да съхранявате данни за сесии с помощта на персонализиран доставчик на съхранение

Режимът In-Proc за съхранение на сесионни данни е режимът по подразбиране и е най-бързият от всички налични режими за съхранение. В този режим данните за сесията се съхраняват в паметта на сървъра - в работния процес на ASP.Net. Трябва да използвате този режим, ако количеството данни, които трябва да се съхраняват в сесията, е по-малко и ако не е необходимо данните да се запазят. Трябва да се отбележи, че данните за сесията, съхранявани в този режим, са променливи, т.е. веднага щом сесията бъде прекратена, данните за сесията се губят. И така, данните в сесията са достъпни, докато сесията е жива.

В режим на държавен сървър данните за сесията се съхраняват в отделен процес - това се нарича ASP.Net държавна услуга. С други думи, данните за сесията в този режим се съхраняват извън работния процес на ASP.Net или пула от приложения в IIS. За разлика от режима In-Proc, данните за сесията в режима на държавен сървър се запазват, т.е. не се губят след рестартирането на вашето уеб приложение.

Следният кодов фрагмент илюстрира как можете да конфигурирате състоянието на сесията във вашето приложение да се съхранява в този режим.

 

   

      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