Pregunta

Estamos intentando que el estado de la sesión funcione con la siguiente línea web.config:

<sessionState 
    mode="SQLServer" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password='thepassword'" 
    cookieless="false" 
    timeout="20"/>

En dbServer, ejecutamos el siguiente comando para configurar la base de datos ASPState:

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

En el servidor web, hemos iniciado el servicio de estado ASP.Net, sin embargo, no se muestran registros en las tablas ASPStateTempApplications o ASPStateTempSessions, y parece que la sesión todavía se está almacenando en el proceso.

¿Qué pasa? ¿Debería el servicio de estado ejecutarse en el servidor DB? ¿Se instala con IIS porque no está disponible en esa máquina, a pesar de que se haya instalado .net 3.5.1?

Los registros de IIS no muestran indicios de falla. ¿Qué pasa?

¿Fue útil?

Solución

Primero, no necesita iniciar el Servicio de estado para usar el estado de sesión de SQL Server. Olvídate del servicio de estado ASP.NET.

¿Está seguro de que su sitio está creando una variable de sesión? Solo porque coloca estos cambios en su web.config, si nunca usa variables de sesión, no se usará.

Otros consejos

Si realmente hay comillas alrededor de la contraseña, intente eliminarlas:

sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password=thepassword"

Y elimine la siguiente línea, no tiene función para el almacenamiento de sesiones SQL:

stateConnectionString="tcpip=127.0.0.1:42424" 

Y bien podría detener el servicio estatal; es necesario para el estado de sesión fuera de proceso, no para el estado de sesión de SQL Server.

Además, el estado de sesión de SQL Server requiere que ejecute InstallSqlState.sql en la base de datos, no aspnet_regsql.exe . Debería crear una nueva base de datos ASPState .

¿Qué tal escribir un pequeño HttpModule? Puede colocarlo en su lugar por el período de tiempo en que necesita hacer la transición de los usuarios a la nueva base de código. El módulo podría hacer algún trabajo en cada solicitud de página para verificar la sesión del usuario y decidir si necesita ser abandonada. Quizás almacene una cadena de versión de la aplicación en la sesión del usuario cuando la sesión se crea por primera vez y compare la cadena de versión de la aplicación actual con esa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top