Cómo trabajar con sesiones en ASP.Net

HTTP es un protocolo sin estado. Esto implica que cada vez que se envía una nueva solicitud del cliente al servidor se pierde la información de estado de la solicitud anterior. Hay varias formas de almacenar y administrar el estado en ASP.Net. El objeto Session es uno de ellos, los otros son objetos Caching y Application.

El almacenamiento en caché mejora el rendimiento de la aplicación al minimizar el consumo de recursos en su sistema. Puede almacenar datos o páginas web de uso frecuente para mejorar el rendimiento, el rendimiento y la escalabilidad de la aplicación al reducir el consumo de los recursos del servidor.

Puede definir la sesión como una sesión de conectividad entre el servidor y el cliente: el objeto de sesión contiene datos que corresponden a la sesión de un usuario. La sesión es una técnica de gestión del estado del lado del servidor que se utiliza para almacenar información específica del usuario en la memoria para su posterior recuperación.

Modos de almacenar datos de la sesión

El objeto de sesión se crea y gestiona en el lado del servidor. El modo de almacenamiento de la sesión determina dónde se deben almacenar los datos de la sesión. El estado de la sesión se puede almacenar en uno de los siguientes modos:

  1. En proceso: almacenado en el mismo proceso ASP.Net
  2. Servidor de estado: almacenado en algún otro sistema
  3. SQL Server: almacenado en la base de datos SQLServer
  4. Personalizado: esto le permite almacenar datos de sesión utilizando un proveedor de almacenamiento personalizado

El modo In-Proc de almacenamiento de datos de sesión es el modo predeterminado y también es el más rápido de todos los modos de almacenamiento disponibles. En este modo, los datos de la sesión se almacenan en la memoria del servidor, dentro del proceso de trabajo ASP.Net. Debe usar este modo si la cantidad de datos que deben almacenarse en la sesión es menor y si no necesita que los datos se conserven. Cabe señalar que los datos de la sesión almacenados en este modo son volátiles, es decir, tan pronto como finaliza la sesión, los datos de la sesión se pierden. Por lo tanto, los datos de la sesión están disponibles mientras la sesión esté activa.

En el modo de servidor de estado, los datos de la sesión se almacenan en un proceso separado; esto se denomina Servicio de estado de ASP.Net. En otras palabras, los datos de la sesión en este modo se almacenan fuera del proceso de trabajo de ASP.Net o del grupo de aplicaciones en IIS. A diferencia del modo In-Proc, los datos de sesión en el modo State Server se conservan, es decir, no se pierden después de reiniciar la aplicación web.

El siguiente fragmento de código ilustra cómo puede configurar el estado de la sesión en su aplicación para que se almacene en este modo.

 

   

      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