Сеанс аутентификации истекает в ASP.NET MVC
Я хочу зарегистрировать пользователя на сайте ASP.NET MVC, и сессия заканчивается очень быстро, за несколько минут. Аутентификация выполняется в одной строке кода:
authProvider.Authenticate(model.UserName, model.Password)
Тогда у меня есть в Web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" name=".ASPXAUTH" timeout="300" slidingExpiration="true">
и настройка на IIS на сервере за 300 минут.
В чем проблема?
1 ответ
Убедитесь, что у вас есть sessionState timeout
значение, которое соответствует вашему forms timeout
:
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login"
name=".ASPXAUTH"
timeout="300"
slidingExpiration="true" />
</authentication>
<sessionState timeout="300" mode="InProc" />
</system.web>
Вы также должны изменить Idle Time-out
параметр вашего пула приложений на желаемое время ожидания аутентификации, чтобы избежать слишком быстрого повторного запуска пула приложений и, следовательно, потери ваших сеансов.
Этот параметр можно найти в:
IIS - Пулы приложений - Расширенные настройки рассматриваемого пула приложений.
Рекомендации:
- Настройка параметров времени ожидания простоя для пула приложений
- Настройки времени ожидания простоя пула приложений IIS7
Если вы не хотите изменять этот параметр (*), решение состоит в том, чтобы использовать StateServer
режим состояния сеанса. Этот режим использует сервис для хранения сеанса вместо памяти с In-Process
Режим. Преимущество состоит в том, что вы не теряете сеанс при повторном использовании пула приложений. Это также очень легко настроить:
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=loopback:42424"
cookieless="false"
timeout="300" />
</system.web>
(*) 5 минут очень мало. По умолчанию это 20 минут. Поэтому я советую установить по крайней мере значение по умолчанию, если вы используете StateServer
Режим.
Ссылка: