2013-03-13 24 views
11

"Moja strona internetowa jest NA ŻYWO, a ten problem dotyczy limitu czasu sesji konfiguracji na serwerze LIVE, a nie w localhost."tryb stanu sesji asp.net "SQLServer"

Mam problem z sesją, która wygasła zbyt wcześnie. link tylko w 2-5 minut. Próbowałem wielu rzeczy i wreszcie postanowił zapisać sesję w „SQL Server” tryb

w moim pliku web.config mam następujący Kodowanie:

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

i mam wszystkie wymagane tabele w ASPState tabela na serwerze. Możesz go zobaczyć na poniższym obrazku.

enter image description here

Ale ja gdy uruchamiam mój wniosek, jego rzuty poniższy błąd:

„Nie można używać SQL Server, ponieważ zarówno wersja ASP.NET 2.0 Session State nie jest zainstalowany na serwerze SQL, lub program ASP.NET nie ma uprawnień do uruchamiania procedury składowanej dbo.TempGetVersion.Jeśli schemat stanu sesji programu ASP.NET nie został zainstalowany, należy zainstalować program SQL Server w wersji 2.0 lub nowszej na serwerze ASP.NET State Session State. , udziel uprawnień do wykonywania w procedurze przechowywanej dbo.TempGetVersion do tożsamości puli aplikacji ASP.NET lub użytkownika serwera Sql określonego w parametrze sqlConnectionString atrybut."

Obraz błędu:

enter image description here

nie jestem w stanie zrozumieć dokładnie problem i jak mogę go rozwiązać. Każda pomoc zostanie doceniona.

Dziękuję

+1

Czy próbowałeś przekazać uprawnienie roli DbExecuter do swojego identyfikatora użytkownika, który jest w twoim ciągu połączenia – DSharper

+1

nie, nie próbowałem czegoś takiego. – jackerj

+0

@jackerj, napisałeś "i mam wszystkie tabele wymagane w tabeli ASPState na serwerze". Po pierwsze, masz na myśli "ASPState db", gdy piszesz "ASPState table". Mam rację?Kolejne pytanie brzmi: w jaki sposób sprawdziłeś, czy te tabele, które znalazłeś w bazie danych, są dokładnie tym, co powinno tam być? –

Odpowiedz

4

Open „oprogramowania” w drzewie i sprawdź najpierw czy dbo.TempGetVersion istnieje. Prawdopodobnie nie zainstalowałeś właściwego schematu.

+0

faktycznie zainstalowałem go na lokalnym serwerze i eksportuję bazę danych na serwerze. – jackerj

+0

Nie wiem w żaden sposób, aby bezpośrednio zainstalować go na serwerze bazy danych – jackerj

+0

zrobiłeś to, co powiedziałeś. ponownie go zainstalowano, a teraz otrzymuję następujący błąd "Niepoprawna nazwa obiektu" tempdb.dbo.ASPStateTempApplications "" czy możesz mi coś o nim powiedzieć? – jackerj

2

Może masz zły tag w Twojej web.config

Prawidłowe przykład powinien być:

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

W celu uzyskania tego, aby pracować dla mnie Pobiegłem polecenia z następujących opcji.

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

wierzę opcja -ssadd („Dodaje wsparcie dla SQL Server tryb stanu sesji.”), Co spowodowało, że aby poprawnie skonfigurować procedur przechowywanych. Zobacz tę link, aby uzyskać pełną listę opcji.

+0

To działało dla mnie na świeżo zainstalowanej maszynie. Możesz uruchomić alos z wiersza poleceń VS – WhiskerBiscuit

0

utknąłem z tym i żadna z odpowiedzi pracował dla mnie, tak na wszelki wypadek, gdyby ktoś inny ma ten problem, to właśnie rozwiązać mój problem, wpadłem w cmd:

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

wszelki wypadek ktoś inny utknął w tej samej sytuacji co ja.