ASP. NET Тайм-аут сеанса не действует, если cookieless = true - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь настроить тайм-аут сеанса в моем приложении.

Когда я помещаю следующий код в свой файл web.config, он отлично работает:

<sessionState cookieless="true" timeout="1" />

То есть Я вижу, что время моего сеанса истекло через 1 минуту. Однако этот код имеет побочный эффект, заключающийся в помещении идентификатора сеанса в URL-адрес, что нежелательно.

С другой стороны, если я использую следующий код в моем web.config, время ожидания сеанса не истекает. не менее 1 часа или дольше:

<sessionState cookieless="false" timeout="1" />

Чтобы определить, что время ожидания сеанса фактически истекло, я использую следующий код в моем _Layout.cs html:

@if (Session[MvcApplication._Ssn_UserName] == null)
{
    Response.Redirect("~/Login/Index");
}

Когда тайм-аут работает, я вижу, что пользователь перенаправляется на мою страницу входа в систему каждый раз, когда он переходит на другую страницу или просто нажимает кнопку refre sh в браузере.

Я вижу такое же поведение при запуске из Visual Studio (IIS Express) или при работе в IIS.

Я много искал в Интернете и не обнаружил никакой корреляции между настройкой без файлов cookie и поведением тайм-аута. Приветствуются любые идеи.

1 Ответ

0 голосов
/ 06 мая 2020

Попробуйте использовать настройку состояния сеанса iis, как предложено ниже:

1) откройте iis и выберите свой сайт.

2) выберите функцию состояния сеанса

3 ) установите режим и приготовьте ie настройку по вашему выбору:

enter image description here

значение тайм-аута сеанса не должно быть больше 20 минут (кроме особые случаи), потому что каждый открытый сеанс сохраняется в памяти. Его также не следует устанавливать ниже 4 минут, поскольку клиенты редко отвечают в течение этого времени, что приводит к потере состояния сеанса. Поэтому попробуйте установить значение 5 минут или больше.

убедитесь, что нет других настроек тайм-аута сеанса, которые конфликтуют с этим параметром, таких как настройка файла global.asax или настройка тайм-аута кода программной части.

попробуйте установить идеальное время для пула приложений iis out настройка такая же, как настройка времени ожидания сеанса.

go в пул приложений веб-сайта -> go в расширенные настройки -> Модель процесса -> и измените время простоя

enter image description here

...