Сбрасывается ли тайм-аут сеанса ASP.Net Inproc при обращении к SessionID? - PullRequest
0 голосов
/ 09 марта 2009

Я прочитал здесь , что сеанс inproc asp.net сбрасывает свое время ожидания при каждом обращении к нему (чтение или запись). У меня вопрос, если таймаут также сбрасывается, если я только читаю sessionID?

Пример: время ожидания сеанса установлено на 20 мин. Через 15 мин. бездействия я загружаю страницу и читаю Session.SessionID. Будет ли сеанс существовать еще через 10 минут ??1005*

И еще один вопрос: имеет ли значение, если страница загружается напрямую или доступ через AJAX?

Ответы [ 2 ]

2 голосов
/ 09 марта 2009

Мне кажется, что вы смешиваете две разные вещи: чтение значения из состояния сеанса (в коде) отличается от присоединения экземпляра SessionState к текущему запросу.

Если я не очень ошибаюсь, тайм-аут не обновляется всякий раз, когда вы обращаетесь к объекту Session (опять же, в коде), скорее он обновляется при обслуживании нового запроса. Это происходит потому, что элемент SessionState сам добавляется в кэш (и установлена ​​политика истечения срока действия)

Итак, чтобы ответить на ваш вопрос: время ожидания не будет сброшено.

Чтобы пояснить приведенный вами пример: время ожидания будет сброшено при загрузке страницы, а не при чтении SessionID в коде.

1 голос
/ 09 марта 2009

Доступ к SessionID не влияет на время ожидания сеанса. Если вы посмотрите на Reflector, свойство SessionID (реализовано в HttpSessionStateContainer) будет выглядеть так:

public string SessionID
{
    get
    {
        if (this._id == null)
        {
            this._id = this._stateModule.DelayedGetSessionId();
        }
        return this._id;
    }
}

Что не касается лежащих в основе хранимых предметов.

Кроме того, на этом уровне не имеет значения, откуда поступил запрос (ajax / normal).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...