Pergunta

Qual é a diferença entre Session.Abandon() e Session.Clear() no ASP.Net?

Foi útil?

Solução

Session.Abandon() terminará a sessão atual. Session_End será demitido e o próximo pedido demitirá o Session_Start evento.

Session.Clear Apenas limpará os dados da sessão e a sessão permanecerá viva.

O ID da sessão permanecerá o mesmo nos dois casos, desde que o navegador não esteja fechado.

Em poucas palavras:

Session.Abandon(); cancela a corrente Session.

Session.Clear(); limpa todos os valores de Session Estado.

Outras dicas

Session.Abandon() 

vai destruir/matar toda a sessão.

Session.Clear()

remove/limpa os dados da sessão (por exemplo,as chaves e os valores da sessão atual), mas a sessão vai ser vivo.

Compare a Sessão.Abandonar() método de Sessão.Clear() não cria uma nova sessão, ele acabou de fazer todas as variáveis da sessão NULA.

ID de sessão permanecerá o mesmo em ambos os casos, desde que o navegador não é fechado.

Algumas coisas a serem observadas aqui da minha experiência:

Session.Abandon() não invalida a sessão atual. Os pedidos antigos executam bem se você os repetir.

Mas, depois de chamá -lo, definir o conteúdo do dicionário de sessão abandonado não tem efeito permanente. A próxima solicitação recebe um novo dicionário de sessão (mesmo se você usar o mesmo ID da sessão, repetindo uma solicitação anterior) e nenhuma das suas alterações anteriores (depois de ter chamado o método) está lá.

Então, parece que Session.Abandon() interrompe totalmente a persistência de toda a sessão, enquanto Session.Clear() apenas remove seus dados.

Além disso, se você precisar proteger seu aplicativo de ataques de repetição, adicione alguma lógica que valida sessões e não dependa de qualquer um desses métodos internos. Eles parecem ser destinados apenas ao gerenciamento da persistência dos dados da sessão, não por proteger seu aplicativo.

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