none
Usuários Logados no site RRS feed

  • Pergunta

  • Em minha aplicação desenvolvida em c#/asp.net gostaria de controlar quantos usuarios estão online. Tentei fazer através de uma flag no banco de dados, porém quando fecho browser no X não sei como fazer para atualizar no banco. Alguém pode me ajudar ou tem uma solução melhor para atualizar essa informação?

    Obrigado!
    • Movido Rogerio Jerez terça-feira, 10 de novembro de 2009 22:22 Movido para o Fórum Apropriado (De:Fórum MSDN)
    sexta-feira, 8 de maio de 2009 15:19

Respostas

  • Caro amigo,

    Uma possibilidade seria controlar a sua flag no banco nos eventos Session_Start e Session_End, dentro do arquivo Global.asax. Se este arquivo não existir, adicione um novo item no seu projeto e escolha a opção "Global Application file".

    Não testei o código abaixo, mas dê uma olhada:

    public void Application_Start()
    {
      Dictionary<string, int> userIDList = new Dictionary<string, int>()
      Application["UsersOnline"] = userIDList;
    }

    public void Session_Start()
    {
      Application.Lock();
      // aqui você coloca o ID da sessão e o ID usuário que ficou online
      ((Dictionary<string, int>)Application["UsersOnline"]).Add(Session.SessionID, user.ID); 
      Application.UnLock();
    }

    public void Session_End()
    {
      Application.Lock();
      // aqui você tira o ID do usuário que 
      int userID = ((Dictionary<string, int>)Application["UsersOnline"])[Session.SessionID];
      // agora você usa o ID do usuário para dar baixa no banco ou algo do tipo
      /* *** */
      Application.UnLock();
    }

    Veja se ajuda ... senão poste novamente para que pensemos mais um pouco!

    Abraço!

    Marcio Paulo M. Martins - MCSD.NET / MCAD / MCP
    • Marcado como Resposta datasetrio quinta-feira, 14 de maio de 2009 14:05
    segunda-feira, 11 de maio de 2009 18:45