Domanda

Stiamo cercando di far funzionare lo stato della sessione utilizzando la seguente riga 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"/>

Su dbServer, abbiamo eseguito il seguente comando per configurare il db ASPState:

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

Sul webServer, abbiamo avviato il servizio di stato ASP.Net, tuttavia nessun record viene visualizzato nelle tabelle ASPStateTempApplications o ASPStateTempSessions e sembra che la sessione sia ancora memorizzata nel processo.

Cosa c'è che non va? Il servizio di stato deve essere in esecuzione sul server DB? Viene installato con IIS, perché non è disponibile su quella macchina, nonostante l'installazione di .net 3.5.1.

I registri IIS non mostrano alcun suggerimento di errore. Cosa c'è che non va?

È stato utile?

Soluzione

Innanzitutto, non è necessario avviare il servizio stato per utilizzare lo stato della sessione di SQL Server. Dimentica il servizio di stato ASP.NET.

Sei sicuro che il tuo sito stia creando una variabile di sessione? Solo perché hai inserito queste modifiche nel tuo web.config, se non usi mai le variabili di sessione, non verranno utilizzate.

Altri suggerimenti

Se ci sono davvero delle virgolette intorno alla password, prova a rimuoverle:

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

E rimuovere la seguente riga, non ha alcuna funzione per l'archiviazione della sessione SQL:

stateConnectionString="tcpip=127.0.0.1:42424" 

E potresti anche interrompere il servizio statale; è necessario per lo stato della sessione out-of-process, non per lo stato della sessione di SQL Server.

Inoltre, lo stato della sessione di SQL Server richiede di eseguire InstallSqlState.sql sul database, non aspnet_regsql.exe . Dovrebbe creare un nuovo database ASPState .

Che ne dici di scrivere un piccolo HttpModule? È possibile rilasciarlo in posizione per il periodo di tempo in cui è necessario trasferire gli utenti alla nuova base di codice. Il modulo potrebbe eseguire alcune operazioni su ogni richiesta di pagina per verificare la sessione dell'utente e decidere se deve essere abbandonato. Forse memorizzi una stringa della versione dell'applicazione nella sessione dell'utente quando la sessione viene creata per la prima volta e confronti la stringa della versione corrente dell'app con quella.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top