2013-03-13 15 views
11

"Meine Website ist LIVE. Und dieses Problem bezieht sich auf das Konfigurieren von Sitzungstimeout auf LIVE-Server und nicht in localhost."asp.net Sitzungsstatusmodus "SQLServer"

Ich habe ein Problem mit der Sitzung zu früh abläuft. Link in nur 2-5 Minuten. Ich habe versucht, viele Dinge und schließlich die Sitzung in „SQL Server“ Modus

in meiner web.config-Datei zu speichern, entschied ich habe folgende Codierung:

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

und ich habe alle erforderlichen Tabellen in ASPState Tabelle auf dem Server. Sie können es von dem Bild unten sehen.

enter image description here

Aber ich, wenn ich meine Anwendung ausführen, wirft seine die folgenden Fehler:

„Kann nicht SQL Server verwenden, da entweder ASP.NET Version 2.0-Sitzungsstatus auf dem SQL-Server nicht installiert ist, oder ASP.NET hat keine Berechtigung zum Ausführen der gespeicherten Prozedur dbo.TempGetVersion.Wenn das ASP.NET-Sitzungszustandsschema nicht installiert wurde, installieren Sie den ASP.NET-Sitzungsstatus SQL Server Version 2.0 oder höher.Wenn das Schema installiert wurde Erlauben Sie der dbo.TempGetVersion-gespeicherten Prozedur entweder die ASP.NET-Anwendungspoolidentität oder den im sqlConnectionString angegebenen Sql-Serverbenutzer, Ausführungsberechtigung zu erteilen Attribut. "

Bild des Fehlers:

enter image description here

Ich bin nicht in der Lage, das Problem genau zu verstehen und wie ich sie lösen kann. Jede Hilfe wird geschätzt.

Danke

+1

Haben Sie versucht, DbExecuter Rollenberechtigung für Ihre Benutzer-ID, die in Ihrer Verbindungszeichenfolge ist – DSharper

+1

Nein, ich habe nichts dergleichen versucht. – jackerj

+0

@jackerj, du hast geschrieben "und ich habe alle Tabellen in ASPState Tabelle auf dem Server benötigt". Zuerst sieht es so aus, als ob du "ASPState db" meinst, als du "ASPState table" geschrieben hast. Hab ich recht?Eine andere Frage ist: Wie haben Sie überprüft, dass die Tabellen, die Sie in der db gefunden haben, genau das sind, was dort sein sollte? –

Antwort

4

Open "Programmierbarkeit" in Ihrem Stammbaum und prüfen Sie zuerst, wenn dbo.TempGetVersion vorhanden ist. Wahrscheinlich haben Sie das richtige Schema nicht installiert.

+0

eigentlich habe ich es auf dem lokalen Server installiert und die Datenbank auf dem Server exportieren. – jackerj

+0

ich weiß keine Möglichkeit, es direkt auf der Server-Datenbank zu installieren – jackerj

+0

tat, was Sie sagten. Es ist wieder installiert, jetzt wird der folgende Fehler angezeigt: "Ungültiger Objektname 'tempdb.dbo.ASPStateTempApplications'" Können Sie mir etwas dazu sagen? – jackerj

2

Vielleicht haben Sie einen schlechten Tag in Ihrem web.config

Ein korrektes Beispiel sein sollte:

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

Um dies für mich zu bekommen ich mit den folgenden Optionen liefen den Befehl zu arbeiten.

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

Ich glaube, die -ssadd Option („Unterstützung für SQL Server-Modus-Sitzungsstatus erstellt.“) Ist es, was es verursacht die gespeicherten Prozeduren richtig eingerichtet. Sehen Sie diese link für, um Liste der Option abzuschließen.

+0

Das funktionierte für mich auf einer frisch installierten Maschine. Sie können dies auch über eine VS-Eingabeaufforderung ausführen – WhiskerBiscuit

0

ich mit diesem und keine der Antworten war für mich, nur für den Fall, dass jemand anderes haben dieses Problem stecken geblieben war, das war, was mein Problem gelöst, ich in der cmd lief:

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

Für den Fall, jemand anderes bleibt in der gleichen Situation stecken wie ich.