Etiquetas

, , , ,

session

Para mantener nuestro estado de sesión entre distintos servidores en asp.net tenemos dos opciones basados en los Session-State Modes, la primera de ellas es utilizar el modo State Server Mode y el segundo usar el SQL Server Mode

–         State Server Mode: en este modo la sessiones se guardan en un proceso que esta separado al proceso de trabajo del IIS o a pool de procesos de la aplicación.

Como implementar el state Server modo:

. Primero debemos asegurarnos de que el servicio ASP.NET state services este corriendo en el servidor que escojamos para almacenar las sesiones.

Para instalar el ASP.NET state services podemos dirigirnos al siguiente directorio systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe

Luego configuramos el web.config de nuestra aplicación de la siguiente manera

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=SampleStateServer:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

Es importante que los objetos guardados en la session sean serializables, además se debe de tener la misma clave de encriptación especificada en la seccion machinekey de nuestro web.config para todas las aplicaciones que formen parte de la granja de servidores.

–         SQL Server Mode: este método nos permite guardar los estado de sesión en una base de datos Sql Server.

Como implementar el SQL Server Mode:

. Al igual que el modo antes visto debemos tener instalado el ASP.NET  state services en el servidos sql Server

.Debemos instalar la base de datos ASP.NET  session state usando la herramienta Aspnet_regsql.exe que esta ubicada en systemroot\Microsoft.NET\Framework\versionNumber

Con el comando Aspnet_regsql.exe debemos indicar lo siguiente:

*El nombre de la instancia Sql Server utilizando el la opción –S

*Las credenciales para logearnos, si usamos la opción –E se utilizara el usuario con el que estemos logeado en ese momento, también podemos usar las opciones –U y –P para indicar un usuario y contraseña

*La opción  -ssadd para agregar la base de datos del session state

Además de estas opciones podemos indicar en que base de datos se almacena la sesión ya que por defecto se almacenara en la base de datos tempdb para esto utilizaremos la opción –sstype seguido de t si queremos que la sesión se guarde en la base de datos tempdb en este caso la sesión se perderá cada vez que se reinicie el sql Server, la opción p si queremos que la sesión se guarde en la base de datos ASPState que es la que acabamos de crear o la opción c si queremos que la sesión se guarde en una base de datos creada por nosotros en este caso debemos incluir la opción –d para indicar cual es esta base de datos.

aspnet_regsql.exe -S SampleSqlServer -E -ssadd -sstype p

aspnet_regsql.exe -S SampleSqlServer –U miUsuario –P miPassword -ssadd -sstype p

. Luego configuramos el web.config de nuestra aplicación de la siguiente manera

<configuration>
  <system.web>
    <sessionState mode="SQLServer"
      sqlConnectionString="Integrated Security=SSPI;data
        source=SampleSqlServer;" />
  </system.web>
</configuration>

Es importante que los objetos que guardemos en sesión sean serializables y que las aplicaciones en la granja de servidores tengan la misma ruta en el servidor IIS

Fuente : http://msdn.microsoft.com/en-us/library/ms178586.aspx