Servidores Dedicados

¿Qué hacer ante el problema de pérdida de datos de la sesión en ASP.NET?

Tags: Sin Tags.

Cuando se aloja un sitio en una Web Farm es necesario tener en cuenta que los request de los clientes no siempre van a caer en el mismo servidor. Esto hace que en ocasiones se pierdan los datos de una sesión si los mismos son guardados en el proceso o en el servidor.

En estos casos lo ideal es guardar las sesiones en una BD de SQL Server logrando de esta manera que las sesiones sean persistentes aun cuando los request caigan en distintos servidores.

Para configurar que nuestra aplicación guarde las sesiones en SQL Server, debemos agregar en el web.config en la sección system.web el siguiente tag:

<sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=localhost;Initial Catalog=wi000000_ASPState;Integrated Security=SSPI;" cookieless="false" />

Donde wi000000_ASPState es el nombre de la BD MS SQLServer que vamos a utilizar para guardar las sesiones. Esta base de datos debemos crearla desde nuestro panel de control Ferozo y para su estructura haremos lo siguiente.

En nuestro equipo de desarrollo abrir una linea de comandos y dirigirnos a la carpeta WinDir\Microsoft.Net\Framework\Version donde Windir es la carpeta donde está instalado Windows y Version es la carpeta que corresponde a la versión del Framework en el que está desarrollada nuestra aplicación.

Allí ejecutaremos aspnet_regsql.exe para crear la BD en nuestro SQL Server de desarrollo:

aspnet_regsql.exe -d wi000000_ASPState -E -S localhost -ssadd -sstype c

o

aspnet_regsql.exe -d wi000000_ASPState -U SQLServerUserName -P password -S localhost -ssadd -sstype c

La primera opción si nuestro SQL Server admite autenticación Windows y la segunda si utilizamos autenticación SQl Server.

Esto creará la BD wi000000_ASPState con las tablas y Store Procedures necesarios. Luego haremos un backup de esta BD, subimos el .bak a nuestra cuenta de hosting y restauramos el .bak en nuestra BD de datos.

Otra cosa que debemos tener en cuenta es que para que desde cualquier servidor de la Web Farm se puedan desencriptar los datos de las sesiones guardadas debemos agregar un machine key a nuestro web.config con las siguientes caracteristicas:

<machineKey validationKey="[Validation Key de 128 caracteres hexadecimales],IsolateApps"
decryptionKey="[decription key de 64 caracteres hexadecimales],IsolateApps "
validation="SHA1"
decryption="AES" />

Para generar los keys se puede utilizar algún generador de key para ASP.NET de los que se encuentran disponibles en su web o bien crear uno propio como se ilustra en: http://msdn.microsoft.com/en-us/library/ms998288.aspx (sección Generate Cryptographically Random Keys).

Atendimento ao Cliente

24x7x365

SEMPRE AO SEU LADO

  • › Não há limite para o número de consultas e o acesso à história.
  • › Equipe altamente treinada.
  • › Acesso a tutoriais, FAQs e seminários gratuitos.
  • › Suporte em inglês, espanhol e português.
Gerenciar Minha Conta

Conheça as várias opções e ferramentas que proporcionam a sua área do cliente.

CLIQUE AQUI
Help Desk

Como utilizar o serviço de apoio e de resolver as questões mais comuns.

CLIQUE AQUI
Os pagamentos e vencimentos

Informações para saber o status da conta, os futuros vencimentos e renovações.

CLIQUE AQUI