É a redefinição de tempo limite de sessão ASP.Net InProc se o SessionID é acessado?

StackOverflow https://stackoverflow.com/questions/625782

  •  05-07-2019
  •  | 
  •  

Pergunta

Eu li aqui que um InProc ASP.NET redefine sessão é toda tempo limite que é acessado (leitura ou escrita). A minha pergunta é, se o tempo limite também é reposto se eu só ler o sessionID?

Exemplo: Tempo limite da sessão é definido como 20 min. Após 15 min. de inatividade eu carregar uma página e ler o Session.SessionID. Será que a sessão ainda existir depois de mais 10 min.?

E mais uma pergunta: que importa se a página é carregada directamente ou acessa via AJAX

Foi útil?

Solução

Parece-me que você está misturando duas coisas diferentes:. Ler um valor de estado de sessão (em código) difere de anexar uma instância de SessionState para a solicitação atual

A menos que eu esteja muito enganado, o tempo limite não é atualizada sempre que você acessar um objeto Session (novamente, no código), em vez disso, é atualizada quando um novo pedido é servido. Isso acontece porque o item SessionState é em si adicionado ao Cache (e política de expiração é definido)

Assim, para responder sua pergunta:. O tempo limite não serão repostas

Para elaborar o exemplo que você deu:. O tempo limite será redefinido no load da página, em vez de quando você ler o SessionID em código

Outras dicas

Acessando SessionID não afeta tempo limite da sessão. Se você dar uma olhada com refletor, a propriedade SessionID (implementado em HttpSessionStateContainer) parece com isso:

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

O que não toque nos itens armazenados subjacentes.

Além disso, nesse nível não importa onde o pedido veio de (Ajax / normal).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top