FernandoGomes Postado Fevereiro 20, 2007 Denunciar Share Postado Fevereiro 20, 2007 Bao tarde pessoal, eu to precisando mostar o numero de usuarios on line, coisa simples,então pensei em algo como Session.Add("UsersOnLine", ValorDaSessao); if (Session["UsersOnLine"] != null) lblOnLineUsers.Text = Session["UsersOnLine"].ToString();ai ele me mostra no label(lblOnLineUsers) o ValordaSessao,beleza so que como eu faco para que a varialvel ValorDaSessao seja o numero de usuarios on line ?Agradeco desde já a atencao de todos abracos, FernandoGomes. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 20, 2007 Denunciar Share Postado Fevereiro 20, 2007 Movendo para .NET.Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FernandoGomes Postado Fevereiro 20, 2007 Autor Denunciar Share Postado Fevereiro 20, 2007 Movendo para .NET.Graymalkin:$foi mal =) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 20, 2007 Denunciar Share Postado Fevereiro 20, 2007 Movendo para .NET.Graymalkin:$foi mal =)Sem problemas. :)Agora, quanto à sua dúvida, acho que você deveria usar o objeto Application e não o Session, uma vez que este segundo é criado para cada usuário que acessa o site, enquanto que o primeiro serve para todos. No caso, no evento Start do objeto Session você deveria incrementar um valor na variável que estaria no objeto Application. Bom, eu realmente não mexo com ASP.NET, mas acho que esta é a idéia.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FernandoGomes Postado Fevereiro 21, 2007 Autor Denunciar Share Postado Fevereiro 21, 2007 cara explicação nota 10 vlw vo tenta aqui brugadaum =) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 FernandoGomes Postado Fevereiro 22, 2007 Autor Denunciar Share Postado Fevereiro 22, 2007 Movendo para .NET.Graymalkin:$foi mal =)Sem problemas. :)Agora, quanto à sua dúvida, acho que você deveria usar o objeto Application e não o Session, uma vez que este segundo é criado para cada usuário que acessa o site, enquanto que o primeiro serve para todos. No caso, no evento Start do objeto Session você deveria incrementar um valor na variável que estaria no objeto Application. Bom, eu realmente não mexo com ASP.NET, mas acho que esta é a idéia.Abraços,Graymalkincara foi isso msmo vlwvou (ou pelo menos tentar ) explicar como eu fiz....Bom primeiro precisamos de um arquivo Global.asaxSe você não tem um clica com o direito, vai em ADD NEW ITEM e adciona um GLOBAL APPLICATION CLASSPronto ! Temos um global.asaxLegal, neste arquivo de configuração temos os seguintes metodos que iremos usar, Application_Start, Session_Start, Session_End.no Application_Start, vamos colocar a seguinte linha de codigo: void Application_Start(object sender, EventArgs e) { Application.Add("numberUser", 0); }Bom agora temos uma variavel de aplicação com o nome numberUser e com o valor 0 Ok ?!Certo !Agora precisamos que a cada nova sessão, ou seja, a cada novo usuario na página esse valor 0 se incrementado a + 1.Faremos isso da seguinte maneira:No Session_Start vamos colocar o seguinte codigo: void Session_Start(object sender, EventArgs e) { int numberUser = (int)Application["numberUser"] + 1; Application["numberUser"] = numberUser; }Pros mais novatos que nem eu devem estar se perguntando, "Qui Diabos é isso :S", calma,eu tambem fiz essa pergunta ( ou sera qui so eu fiz essa pergunta ?! :P ), é simples:Quando uma nova sessão for iniciada ( void Session_Start(object sender, EventArgs e) )uma variavel do tipo inteiro chamada de numberUser ( int numberUser )vai ter o valor inteiro da variavel de aplicação chamada de numberUser + 1 ( (int)Application["numberUser"] + 1; )esse (int) na frente do application converte para um inteiro.Beleza, então até aqui temos o seguinte:Temos uma variavel la em cima dentro do Application_Start chamada de numberUser com o valor 0.E mais em baixo declaramos uma variavel do tipo inteiro com o nome de numberUser e que vai ter o valor de Application["numberUser"] + 1, ou seja,Se a minha variavel de aplicação for igual a 1 quando uma nova sessão for iniciada o valor da variavel int numberUser vai ser 2 certo ?Ainda tá complicado né... Pelo menos eu não entenderia direito ainda ( as vezes ainda me atrapalho hauihau )Vamos pensa um poquinhu, Eu tenho a variavel de aplicação que é igual a 1.Ai eu to dizendo dentro do metodo Session_Start pra que quando uma nova sessão iniciar, ou seja, um novo usuario entrar, ele pegue aquele valor armazenado lá na minha variavel de aplicação ( que agente está supondo que é 1 ) e some com + 1.Resultado 2. Então o int numberUser = 2. Ficou moleza agora né ? =)Beleza. Agora vamos ver o que nos diz a terceira linha. Application["numberUser"] = numberUser; :huh: Não é tão dificil vai....pensa um poquinhu ... =)Isso ai, tá ficando facil entender essas coisas né ?!Mas vamos ao que intereça. Lembra da nossa ultima conclusão onde int numberUser era igual a 2.Intão eu to falando para que agora o valor da variavel de aplicação seja o valor da variavel int numberUser ( que no momento é 2 ).Blah mamão com açucar né ?Agora vamos para o mais facil. ( Mais facil que isso ?! É !! :P )Bom, Temos o valor das Sessões iniciadas e somadas que nos da o valor de usuarios online ok ?!Intão beleza, agora precisamos mostrar isso =)Facil facil !!!Bom o que precisamos ?1 Label.É é so um simples label ( só lembrando que tem que ser do conjunto Standart de componentes, e não do conjunto html ok ?! ) Bom se já temos um label vamos mostrar o valor que queremos mostrar nele. Para isso é simples:Na página ( default.aspx por exemplo ) temos o metodo Page_Load que executa os codigos no carregamento da pagina, belezadentro dele vamos por o que tem que aparecer no label ( que no meu caso eu coloquei o nome do label de lblOnLineUsers o .Text que vem depois do nome do label significa que eu estou falando sobre a propriedade texto do label ou seja no que eu quero que o valor do texto do label seja ) o codigo o seguinte : protected void Page_Load(Object sender, System.EventArgs e) { lblOnLineUsers.Text = Application["numberUser"].ToString(); }O que significa ?Facim rsrs, to dizendo que o a propriedade texto ( como já dito o .Text ) do label lblOnLineUsers é igual ao valor da variavel de aplicação numberUser ( Application["numberUser"] ), beleza até ai acho que todo mundo já está entendendo, mas e o ToString();bom, estamos concatenando o valor da variavel de aplicação numberUser ao valor de um Label certo, então temos que converter o valor da variavel de aplicação para uma string, dai o comnado .ToString() os () é porque ele é um metodo, então precisa de parametros, que vão dentro do parenteses, enfim.Bom desculpa vo corre um poquinhu agora pra termina de explica porque apareceu um problema aqui que eu tenho que resolver agora.Estamos esquecendo que quando o usuario encerra a sessão seja decrementado um numero da variavel de aplicação certo ?!ok vamos usar a seguinte linha de codigo no arquivo global.asax no metodo Session_End: void Session_End(object sender, EventArgs e) { int numberUser = (int)Application["numberUser"] - 1; Application["numberUser"] = numberUser; }Fica assim, acho que não está dificil de entender né ?bom eu tenho que ir desculpa ter corrido um pouco no final ...=/vou revisar assim que possivel e esclarecer qualquer coisa que eu tenha escrito errado ou explicado mau, pessoas não coloquei esse codigo aqui com a intenção de vim 500 pessoas pegar o codigo e nem se da o trabalho de ver que o postou, coloquei com a intenção de que pessoas como eu tenha a oportunidade de entender detalhadamente como funciona, não sei vocês mas eu precisei de uma informação assim para poder entender e agora por meio deste forum passo a vocês, façam bom proveito.Abraços,FernandoGomestirolo_power_art@hotmail.com Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Fevereiro 23, 2007 Denunciar Share Postado Fevereiro 23, 2007 Ótima explicação, Fernando! :)Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maikel Postado Fevereiro 28, 2007 Denunciar Share Postado Fevereiro 28, 2007 Muito legal sua explicação....Porém ficou uma dúvida.. se puder ajudar...Abro a página em 3 computadores... e aparecem 3 usuários online, mas se eu fechar e página em um pc a página continua com 3 usuários online.... se se abrir a página de novo nesse pc.... irá aparecer com 4 usuários online... ou seja, ele não consegue limpar o usuario que fecha a página.... não executa Session_End...Fiz exatamente como você explicou... o que pode estar ocorrendo??O que preciso fazer para conseguir executar o que está no Session_End??Se puder ajudar agradeço....Att Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Connect Postado Março 15, 2009 Denunciar Share Postado Março 15, 2009 Olá!Muito bom! Muito obrigado!Demorei encontrar um global.asax em linguagem C#, pois a maioria eram em VB.Net... a linguagem da qual não gosto.. Funcionou direitinho, valeu! :DAbraços, Expert. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
FernandoGomes
Bao tarde pessoal, eu to precisando mostar o numero de usuarios on line, coisa simples,
então pensei em algo como
Session.Add("UsersOnLine", ValorDaSessao);
if (Session["UsersOnLine"] != null)
lblOnLineUsers.Text = Session["UsersOnLine"].ToString();
ai ele me mostra no label(lblOnLineUsers) o ValordaSessao,
beleza so que como eu faco para que a varialvel ValorDaSessao seja o numero de usuarios on line ?
Agradeco desde já a atencao de todos
abracos, FernandoGomes.
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.