Remover a partir de dados de usuário de cache específica sobre Session_End
-
08-07-2019 - |
Pergunta
Estou inserir algo no cache quando o usuário faz um login.
Agora eu quero excluir que a partir do cache quando a sessão do usuário expira. HttpContext é nulo .. então eu não sei por qual usuário da sessão expirado. Como posso ir sobre encontrar isso?
EDIT: , infelizmente SessionID não me oferecem muito. O que eu estou fazendo neste caso em particular está usando um HttpModule que alças AuthorizeRequest para inserir o nome do utilizador actual em cache para garantir que outro usuário a partir de outra máquina não pode login. Mas a sessão é nula no HttpModule. Então eu não posso usar isso. Qualquer outra sugestão?
Solução
Você pode chegar à sessão em um HttpModule, você só tem que esperar até que ele é inicializado, ou seja, o evento AcquireRequestState ( http://msdn.microsoft.com/en-au/system.web.httpapplication.acquirerequeststate.aspx )
Outras dicas
Manipular o evento Session_End em sua global.asax. Aqui você deve ter acesso ao SessionID.
Assumindo que você está acessando o item em cache em cada página, você pode definir o item em cache para ter uma expiração deslizante. Defina o tempo de expiração para o mesmo que o tempo limite da sessão. Com a expiração variável, o cache será atualizada a cada vez que o objeto é acessado e será eliminado se não for acessada dentro desse tempo.
http://msdn.microsoft.com/en-us/ biblioteca / 4y13wyk9.aspx para obter mais informações.