Quando session_end () é chamado no ASP.NET MVC?
-
24-09-2019 - |
Pergunta
Eu configurei meu Web.Config
Arquivo o seguinte em um projeto ASP.NET MVC 2:
<sessionState mode="InProc" timeout="1"/>
E adicionou o seguinte em Global.asax.cs
:
protected void Session_End(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_End");
}
protected void Session_Start(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine("Session_Start");
}
Session_Start()
é chamado quando um novo usuário entra no site. Eu teria esperado Session_End()
Ser chamado após 1 minuto de tempo ocioso, mas não é o caso. Estou esquecendo de algo?
Solução
Seja paciente. O evento deve ser chamado, mas não necessariamente logo após o tempo limite.
Você pode tentar de um navegador: inicie uma sessão, espere> 1 minuto, faça um postback de alguma forma
Isso deve ajudar a verificar se o tempo limite funciona e acho que você também verá o sessão acontecendo naquele momento. Caso contrário, espere e comece outras sessões. O sistema virá por aí chamando -o algum dia.
Outras dicas
Lembre-se disso:
Se você não salvar nada na sessão, o session_end não disparará. Se você estiver salvando dados na sessão na primeira solicitação, e chamando o abandono na mesma solicitação, o session_end também não será demitido.
Espero que isto ajude!
T
por falar nisso:Evento ASP.NET session_end não disparar
Dica para teste: Usar Session.Abandon
Portanto, você não precisa mexer com seu valor real Web.config. Só não defina um valor de sessão e ligue Session.Abandon
Durante o mesmo pedido ou não será armazenado.