none
COMO GUARDAR E RECUPERAR TODAS AS SESSÕES DE USUÁRIOS EM UM SERVIDOR RRS feed

  • Pergunta

  • Bom dia a todos,

    Estou desenvolvendo um sistema no qual necessito recuperar todos os usuários logados ou com sessão ativa no servidor.

    Contexto: Quando o usuário loga no sistema, além de criar a session, guardo na base de dados suas informações com data de logon e tempo da sessão.

    Session["exemplo"] = exemplo;

    Quando o usuário faz logoff eu derrubo a session e altero as informações na base de dados. Seguindo essa estrutura consigo ter "em mãos" todos os usuários logados. O problema que me ocorre é quando o usuário fica com tempo ocioso e a sessão automaticamente cai ou quando o usuário fecha o navegador. Dessa forma não consigo mais alterar o status do mesmo na base de dados.

    ?????

    Gostaria de saber se existe uma forma de recuperar todas as session ativas em um servidor, ou seja, recuperar todos os usuários que ainda estão logados no sistema e que suas sessions ainda não expiraram?

    Alguém já conseguiu fazer algo semelhante?

    Obrigado.
    Att,
    quarta-feira, 29 de outubro de 2014 01:27

Todas as Respostas

  • Boa tarde Marcus,

    Pelo o que eu entendi, você quer saber se a sessão ainda está ativa. É isso mesmo?

    Caso for, eu costumo fazer da seguinte maneira.

    if (Session["usuario"] != NULL)
       // Sessão ativa.
    else
      // Sessão inativa.

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    quarta-feira, 29 de outubro de 2014 09:48
  • Algo que pode lhe ajudar para isso são os eventos do global.asax:


    <script language="C#" runat="server">
    public void Application_OnStart()
    {
      Application["UsersOnline"] = 0;
    }
    
    public void Session_OnStart()
    {
      Application.Lock();
      Application["UsersOnline"] = (int)Application["UsersOnline"] + 1;
      Application.UnLock();
    }
    
    public void Session_OnEnd()
    {
      Application.Lock();
      Application["UsersOnline"] = (int)Application["UsersOnline"] - 1;
      Application.UnLock();
    }
    </script>

    quarta-feira, 29 de outubro de 2014 11:32