2016-10-05 9 views
1

В моем ASP.NET MVC5 website Войти и Тайм-аут сеанса в web.config следующим образом:ASP.NET MVC аутентификации или сеанс завершается быстрее, чем установить

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" slidingExpiration="true" timeout="60"/> 
    </authentication> 
    <sessionState mode="InProc" timeout="60"/>  
</system.web> 

Еще сеанса или аутентификации раз наш, пять минут. Я подошел к своему веб-хостингу, чтобы увеличить тайм-аут в IIS, и они поделились screenshot после увеличения тайм-аута в IIS, но ничего не изменилось. Любая идея, почему это происходит.

ответ

1

Это была проблема с SystemIdleTime переменной в IIS. Я попросил моего хостинг-провайдера увеличить это значение до 30 минут, и он сработал.

Это означает, что все мои переменные сеанса будут удалены, когда пул приложений отключится, если в течение 30 минут нет запроса. Это значение переопределит тайм-аут сеанса, указанный в web.cofig веб-сайта. Вы можете установить его в 0, чтобы указать, что пул приложений никогда не будет закрыт, а затем вы можете контролировать тайм-аут сеанса через web.config. Я также нашел это хорошим article -

1

Прежде всего, попытайтесь установить тайм-аут сеанса по методу Session_Start внутри Global.asax:

void Session_Start(object sender, EventArgs e) 
{ 
    Session.Timeout = 60; 
} 

Примечание: При использовании в процессе состояния сеанса, ваши сессии будут уничтожены каждый пул приложений IIS перерабатывает, который в ваш пул приложений повторно переработал через 5 минут.

Если выше попытка не работает, и у вас есть доступ к управлению IIS сервера, выполните следующие действия:

  1. Откройте Диспетчер IIS.
  2. Выберите пулы приложений => [ваше имя пула приложений] => Утилизация/Дополнительные настройки.
  3. Включите 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

+0

Большое спасибо Ямамото Сан, это была проблема с переменной ** SystemIdleTime ** в IIS. Я попросил моего хостинг-провайдера изменить это значение, и он сработал. Я также нашел это хорошим ** [статья] (http://aspnetfaq.com/iis7-application-pool-idle-time-out-settings/) ** – Sujoy