Приложение устанавливает session.timeout в обработчике события Application_AcquireRequestState.
До истечения сеанса появляется окно с уведомлением. Он сбрасывает время ожидания сеанса, скажем, до 3 минут (обычно это 30 минут) через Application_AcquireRequestState.
Уведомление предлагает пользователю возможность продлить сеанс еще на 30 минут. Если пользователь нажимает «да», он сбрасывает время ожидания сеанса на 30 минут с помощью предыдущего обработчика событий.
Проблема заключается в том, что, хотя пользователь нажимает «Да» и время ожидания сеанса установлено правильно, время сеанса, по-видимому, превышает заданное время. Это происходит только после уведомления.
Подозрение, что когда оно достигает Application_AcquireRequestState, время ожидания для этого запроса уже рассчитано. Новое значение тайм-аута будет использовано для следующего запроса. Поэтому, когда пользователь нажимает «Да», чтобы продлить сеанс, время ожидания для текущего запроса составляет не 30 минут, а всего 3 минуты, из-за времени ожидания, установленного в окне уведомлений. Да будет действовать, только если пользователь отправит другой запрос.
(Окно уведомлений имеет собственный объект синхронизации)
Кто-нибудь может это проверить? или укажите мне хороший ресурс, чтобы объяснить, как asp.net управляет этим?
Спасибо!