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:
- InProc: Es el comportamiento por defecto
- Custom: Sólo en la versión 2.0 de momento nos saltamos esta forma de hacerlo
- Off: El estado está desactivado, no se guardan variables de sesión ni aplicación
- 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.
- 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.