2013-03-13 15 views
11

"Il mio sito Web è LIVE e questo problema è correlato alla configurazione del timeout della sessione sul server LIVE e non su localhost."modalità stato sessione asp.net "SQLServer"

Ho un problema con la sessione che scade troppo presto. collegamento solo in 2-5 minuti. Ho provato molte cose e alla fine ha deciso di archiviare la sessione in "SQL Server" modalità

nel mio file web.config ho codifica seguente:

<sessionState mode="SQLServer" cookieless="false" timeout="45" 
sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/> 

e ho tutte le tabelle richieste nel ASPState tabella sul server. Puoi vederlo dall'immagine qui sotto.

enter image description here

Ma io quando ho eseguito la mia domanda, la sua genera l'errore di seguito:

"Impossibile utilizzare SQL Server perché sia ​​la versione ASP.NET 2.0 stato sessione non è installato sul server SQL, oppure ASP.NET non dispone dell'autorizzazione per l'esecuzione della procedura memorizzata dbo.TempGetVersion. Se lo schema dello stato sessione ASP.NET non è stato installato, installare ASP.NET Stato sessione SQL Server versione 2.0 o successiva. , concedere l'autorizzazione di esecuzione sulla procedura memorizzata dbo.TempGetVersion all'identità del pool di applicazioni ASP.NET o all'utente del server Sql specificato in sqlConnectionString attributo ".

immagine dell'errore:

enter image description here

io non sono in grado di capire l'esatto problema e come posso risolverlo. Qualsiasi aiuto sarà apprezzato.

Thank You

+1

Hai provato a concedere l'autorizzazione di ruolo DbExecuter al tuo id utente che è nella stringa di connessione – DSharper

+1

no non ho ancora provato niente del genere. – jackerj

+0

@jackerj, hai scritto "e ho tutte le tabelle richieste nella tabella ASPState sul server". In primo luogo, sembra che tu intenda "ASPState db" quando hai scritto "ASPState table". Ho ragione?Un'altra domanda è: come hai controllato che quelle tabelle che hai trovato nel db sono esattamente ciò che dovrebbe essere lì? –

risposta

4

aperto "programmabilità" nel vostro albero e verificare prima se dbo.TempGetVersion esiste. Probabilmente non hai installato lo schema corretto.

+0

effettivamente l'ho installato sul server locale ed esporta il database sul server. – jackerj

+0

Non conosco alcun modo per installarlo direttamente sul database del server – jackerj

+0

ha fatto quello che hai detto. istallato di nuovo, ora ricevendo l'errore seguente "Nome oggetto non valido 'tempdb.dbo.ASPStateTempApplications'" puoi dirmi qualcosa a riguardo? – jackerj

2

Forse si ha un cattivo tag nel web.config

Un esempio corretto dovrebbe essere:

<sessionState 
allowCustomSqlDatabase="true" 
mode="SQLServer" 
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/> 
25

Al fine di ottenere questo a lavorare per me ho eseguito il comando con le seguenti opzioni.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p 

credo che l'opzione -ssadd ("Aggiunge il supporto per SQL Server lo stato della sessione in modalità".) È quello che ha causato impostare correttamente le stored procedure. Vedere questo link per completare l'elenco delle opzioni.

+0

Questo ha funzionato per me su una macchina appena installata. È possibile eseguire questo da un prompt dei comandi VS – WhiskerBiscuit

0

sono rimasto bloccato con questo e nessuna delle risposte lavorato per me, nel caso in cui qualcun altro ha questo problema, questo era ciò che ha risolto il mio problema, mi sono imbattuto nel cmd:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd 

Solo nel caso qualcun altro rimane bloccato nella stessa situazione come me.