Mantener variables de Sesión y Aplicación de forma permanente en ASP.net

A veces necesitamos mantener nuestras variables de sesión o aplicación (session y application) de forma permanente en vez de los 20 minutos por defecto o simplemente necesitamos mantener el estado en un cluster o granja de servidores , este articulo enseña como hacerlo con ASP.net 1.x o superior.

Nota: estas opciones son siempre mucho más lentas que el comportamiento predeterminado del sistema para las variables de sesión y aplicación, sólo deben usarse en caso realmente necesario o en una intranet privada o acabaremos saturando el servidor.

Lo primero de todo editamos o creamos la sección del Web.config sessionState y modificamos el atributo Mode

</system.web>

<sessionState

mode="InProc"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"

cookieless="false"

timout="20" />

</system.web>

Las opciones que puede tomar el atributo Mode son:

  1. InProc: Es el comportamiento por defecto
  2. Custom: Sólo en la versión 2.0 de momento nos saltamos esta forma de hacerlo
  3. Off: El estado está desactivado, no se guardan variables de sesión ni aplicación
  4. StateServer: El estado se almacena en otro ordenador de la red establecido mediante el atributo: stateConnectionString="tcpip=127.0.0.1:42424" (por ejemplo); Ese ordenador tiene que tener instalado ,net framework y ejecutar (y dejar en funcionamiento) el programa ASP_STATE.exe que se encuentra en la carpeta del .net Framework.
  5. SQLServer: El estado se almacena en un servidor SQL establecido mediante el atributo: sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" (por ejemplo) ; Ese servidor de bases de datos tiene que haber ejecutado el script InstallSqlState.sql que se encuentra en la carpeta del .net Framework.

En caso de activar cualquier opción distinta de InProc el estado nunca caduca, es necesario hacer un Session.Abandon() o Application.Abandon() manualmente y en cualquier caso se notará una severa perdida de rendimiento.

Pablo  Gumpert  Fernandez (aldeamedia)
Mantener variables de Sesión y Aplicación de forma permanente en ASP.net
Pablo Gumpert Fernandez (aldeamedia)

Pablo Gumpert es formador y consultor oficial de Microsoft para .NET y SQL server.Lleva desarrollando desde hace más de diez años y durante ese tiempo ha trabajado como programador de videojuegos ,analista informático, experto en seguridad, DBA ... Actualmente se dedica sobre todo a la formación. Su especialidad es la programación en .NET aunque también es experto en MSSQL Server y en el año 2002 fundó su propia empresa colaboradora de diversos centros partner Microsoft.
Fecha de alta:16/04/2007
Última actualizacion:16/04/2007
Visitas totales:26841
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com