Убедитесь, что значение 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 - пулов приложений - Расширенные настройки пула приложений в вопросе.
Ссылки:
Если вы не хотите, чтобы изменить этот параметр (*), решение заключается в использовании режима сессии StateServer
Состояние. В этом режиме используется служба для хранения сеанса вместо памяти с режимом In-Process
. Преимущество заключается в том, что не теряется сессия, когда пул приложений перерабатывается. Также очень легко настроить:
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=loopback:42424"
cookieless="false"
timeout="300" />
</system.web>
(*) 5 минут очень низкое. Значение по умолчанию - 20 минут. Поэтому я советую установить его по крайней мере по умолчанию, если используется режим StateServer
.
Ссылка:
Разве это не потому, что ваш 'sessionState timeout' имеет низкое значение? – krlzlx
это минуты. поэтому он должен истечь через 300 минут, но истекает через 5. –
Я не говорю о 'time timeout', но' sessionState timeout' – krlzlx