У меня есть страница (View), которая через несколько секунд отправляет запросы AJAX. Пользователь может работать с этой страницей очень долго. Но сеанс закончился примерно через 40-60 минут. Поэтому AJAX-запросы не возвращают полезную информацию.ASP.NET MVC 3. Сессия слишком быстро завершилась
Мои Web.config
<system.web>
<sessionState
timeout="259200"
cookieName="SunTest.SessionId"
regenerateExpiredSessionId="true"
sqlCommandTimeout="200"
stateNetworkTimeout="200">
</sessionState>
<roleManager enabled="true" defaultProvider="SqlProvider" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="259200" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
<providers>
<add name="SqlProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlServices" applicationName="/" />
</providers>
</roleManager>
<authentication mode="Forms">
<forms loginUrl="~" timeout="259200" protection="All" />
</authentication>
Я изменил мой web.config
<appSettings>
<add key="enableSimpleMembership" value="false" />
<add key="autoFormsAuthentication" value="false" />
</appSettings>
<system.web>
<sessionState
mode="SQLServer"
allowCustomSqlDatabase="true"
sqlConnectionString="Data Source=servername;Initial Catalog=dbname;User ID=username;Password=password"
timeout="259200"
cookieName="SunTest.SessionId"
regenerateExpiredSessionId="true"
sqlCommandTimeout="200"
stateNetworkTimeout="200">
</sessionState>
<roleManager createPersistentCookie="true" enabled="true" defaultProvider="SqlProvider" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieTimeout="259200" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All">
<providers>
<add name="SqlProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlServices" applicationName="/" />
</providers>
</roleManager>
<authentication mode="Forms">
<forms domain="help2b-2.hosting.parking.ru" name="ASPXFORMSAUTH" path="/" loginUrl="~" slidingExpiration="true" cookieless="UseCookies" timeout="259200" requireSSL="false" />
</authentication>
Это делает эти печенья:
Итак, есть 3 печенье:
SunTest.SessionId. 301 байт. Истекает - сеанс.
ASPXFORMSAUTH. 301 байт. Истекает - сеанс.
.ASPROLES. 565 байт. Истекает - Вт, 10 июля 2012 4:14:48 GMT
Но через несколько минут (что-то около 30-40), он удаляет куки .ASPROLES. Пользователь выйдет из системы. Таким образом, запросы AJAX не работают.
Что не так с этим конфигом?
<формы имя = "ASPXFORMSAUTH" path = "/" domain = "something.com" loginUrl = "~/Account/LogOn" cookieless = "UseCookies" slideExpiration = "true" timeout = "1441" requireSSL = "false" /> – Sparkle
К сожалению, решил проблему. Я изменил вопрос с помощью нового web.config. –
Выполняют ли ваши запросы ajax также отправку файлов cookie? Потому что они должны держать вашу сессию в живых. – linkerro