Прежде всего, попытайтесь установить тайм-аут сеанса по методу Session_Start
внутри Global.asax:
void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 60;
}
Примечание: При использовании в процессе состояния сеанса, ваши сессии будут уничтожены каждый пул приложений IIS перерабатывает, который в ваш пул приложений повторно переработал через 5 минут.
Если выше попытка не работает, и у вас есть доступ к управлению IIS сервера, выполните следующие действия:
- Откройте Диспетчер IIS.
- Выберите пулы приложений => [ваше имя пула приложений] => Утилизация/Дополнительные настройки.
- Включите
Regular time interval (minutes)
и установите его на 60, а затем примените ваши изменения.
Если у вас нет доступа на обоих IIS Manager, конфигурации & SQL Server, вы можете попробовать DB на основе государственного управления сеансами вместо InProc
режима (см MSDN ссылку ниже).
DB на основе состояния сеанса необходимо изменить значение атрибута режима в SQLServer
, например:
<system.web>
<sessionState mode="SQLServer" sqlConnectionString="Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASE" />
</system.web>
Ссылка:
MSDN: https://msdn.microsoft.com/en-us/library/ms178586.aspx
Session expires too quickly in asp.net mvc4 application
Большое спасибо Ямамото Сан, это была проблема с переменной ** SystemIdleTime ** в IIS. Я попросил моего хостинг-провайдера изменить это значение, и он сработал. Я также нашел это хорошим ** [статья] (http://aspnetfaq.com/iis7-application-pool-idle-time-out-settings/) ** – Sujoy