C # .NET Как установить время сеанса до 6 часов с проверкой подлинности форм? - PullRequest
2 голосов
/ 07 января 2010

В своем приложении я использую Аутентификацию по формам и сеансы. Как мне позаботиться о том, чтобы пользователь вышел из системы через 6 часов?

В моем web.config я установил время ожидания сессий на 360 минут. Но через 10 минут бездействия я должен снова войти в систему.

Я также установил таймаут проверки подлинности на 360 минут. Что я делаю не так?

Ответы [ 6 ]

4 голосов
/ 07 января 2010

Существуют и другие значения времени ожидания, которые влияют на время ожидания сеанса. Одна из них, которая приходит мне в голову, - это тайм-аут рабочего процесса (который устанавливается из IIS). Время ожидания рабочего процесса по умолчанию составляет 20 минут, поэтому, если на вашем сайте не будет активности в течение 20 минут, рабочий процесс завершится, и ваш сеанс завершится, если вы используете сеанс в режиме InProc. Поэтому вам также может понадобиться довести время ожидания Worker Process до 360 минут.

3 голосов
/ 07 января 2010

попробуйте этот параметр:

<режим проверки подлинности = "Формы">

пара вещей, чтобы проверить также:

  • , если ваш FormsAuthenticationTicket создан с меньшим значением тайм-аута cookie, это может переопределить

  • если интервал "выключение рабочих процессов" пула приложений меньше, это приведет к сбросу состояния ранее

1 голос
/ 24 июля 2015

Пошаговые инструкции Настройте выгрузку процесса рабочего процесса для одного пула приложений 1. Откройте IIS Manager.

2.Выберите пулы приложений на панели «Подключения», выберите пул приложений на панели «Пул приложений», а затем нажмите «Дополнительные параметры ...» на панели действий.

3.В диалоговом окне «Дополнительные параметры» в разделе «Модель процесса» можно установить значение времени ожидания простоя с 20 минут по умолчанию на другой период времени.

4.Нажмите ОК.

1 голос
/ 07 января 2010

Вам необходимо настроить Таймаут и SlipExpiration :

<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>
1 голос
/ 07 января 2010

Вместо установки времени ожидания сеанса вы могли бы реализовать механизм для поддержания сеанса живым, например: обновить страницу или сделать ajax-вызов и т.д., которые можно проверить и т. д.

0 голосов
/ 07 января 2010

Используете ли вы сеансы InProc? (Это значение по умолчанию для ASP.net AFAIK). В этом случае проверьте, перезагружается ли ваш пул приложений, так как это уничтожит все сеансы. У меня нет IIS для проверки, но я считаю, что он настроен на отключение пула приложений, если он простаивает в течение определенного времени - если это ваш сервер разработки, возможно, вы простаивали слишком долго, чтобы AppPool перезагружался а ваши сессии InProc убиты?

Я не уверен, насколько легко быстро внедрить stateserver или sqlserver вместо inproc, но вот страница MSDN о состоянии сеанса .

...