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?

Foi útil?

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.

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