Pergunta

Estamos tentando fazer com que o estado da sessão de trabalho usando a seguinte linha 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"/>

Em DBServer, temos execute o seguinte comando para configurar o db ASPState:

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

no servidor web, nós começamos o serviço de estado ASP.Net, no entanto, há registros mostram-se em tabelas ASPStateTempApplications ou ASPStateTempSessions, e parece muito parecido com sessão ainda está sendo armazenado no processo.

errada de que? Caso o serviço de estado ser executado no servidor de banco de dados? Será que são instalados com o IIS, porque ele não está disponível na máquina, apesar .net 3.5.1 está sendo instalado.

O IIS registros mostram nenhum sinal de fracasso. O que há de errado?

Foi útil?

Solução

Em primeiro lugar, você não precisa para iniciar o serviço de estado, a fim de utilizar o estado da sessão SQL Server. Esqueça o serviço de estado ASP.NET.

Você tem certeza de que seu site está criando uma variável de sessão? Só porque você colocar essas mudanças em sua web.config, se você nunca usar variáveis ??de sessão, não vai ser utilizado.

Outras dicas

Se não há realmente aspas em torno da senha, tente removê-los:

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

e remover a seguinte linha, ele não tem nenhuma função para armazenamento de sessão SQL:

stateConnectionString="tcpip=127.0.0.1:42424" 

E assim como você pode parar o serviço de estado; ele é necessário para o estado da sessão out-of-process, não para o estado da sessão SQL Server.

Além disso, o estado da sessão SQL Server requer que você executar InstallSqlState.sql no banco de dados, não aspnet_regsql.exe. Deve criar um novo banco de dados ASPState.

Como sobre a escrita de um pequeno HttpModule? Você poderia deixá-lo cair no lugar para o período de tempo em que você precisa para usuários de transição para a nova base de código. O módulo poderia fazer algum trabalho em cada solicitação de página para verificar a sessão do usuário e decidir se ele precisa ser abandonada. Talvez você armazenar uma seqüência de versão do aplicativo na sessão do usuário quando a sessão é criada pela primeira vez e comparar a cadeia de versão aplicativo atual contra isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top