Inquiridor
Como registrar entrada e saída numa aplicação Web?

Pergunta
-
Salve!
No departamento em que trabalho temos um portal com links para várias das aplicações que desenvolvi. Estas rodam num servidor IIS 7.
A gerência do departamento está querendo uma estatística do uso de algumas das aplicações, tipo quando o usuário entrou numa aplicação e quando saiu.
Bem, o quando entrou é tranquilo. O galho é o quando saiu da aplicação. Como consigo registrar que o usuário não está mais na aplicação (que pode ter várias páginas)?
Qual a melhor maneira de ter essa estatística de uso da aplicação? Será que já tem algo no IIS 7 pra atender a isso?
Grato pela atenção de todos.
Paulo Ricardo Ferreira
Todas as Respostas
-
Quando o usuário fechar o navegador não é disparado nenhum evento de servidor, por isso nativamente não tem como saber no ASP.NET quando ele fechou o navegador...
Mas no lado do cliente TEM !!!
Antes de fechar o navegador é disparado o evento OnbeforeUnload, mapeia esse evento da Janela e dispara um POST com AJAX pra salvar a data e hora que ele fechou...
-
Caro Leonardo,
Antes de ler ver a sua sugestão eu estava fuçando o Fórum e vi uma sugestão de 2009 que achei que poderia aplicar tranquilamente nas minhas aplicações, já que todas as minhas aplicações usam MasterPage.
Então, na tag <head></head> do SourceCode da MasterPage incluí o código abaixo:
<script language="javascript" type="text/javascript"> window.onbeforeunload = function() { if((window.event.clientX<0) || (window.event.clientY<0)) { window.open("~/Logout.aspx", "fechar"); } } document.onkeydown = Verificar; function Verificar() { var tecla=window.event.keyCode; //tecla normal var alt=window.event.altKey; // Para Controle da Tecla ALT var ctrl=window.event.ctrlKey; // Para Controle da Tecla CTRL if (alt && tecla==115) // Evita fechar via Teclado { alert("Para sair do sistema clique em SAIR !"); event.keyCode=116; event.returnValue=false; } if (ctrl && tecla==78) { alert("CTRL+N bloqueado"); event.keyCode=0; event.returnValue=false; } } </script>
Criei também a página Logout.aspx e no evento Load desta página chamei o método para registrar no banco de dados a saída do usuário.
Repara que a função javascript mapeia justamente o evento que você mencionou, onbeforeunload. Só que não funcionou nada.
Onde errei?
Grato pela sua atenção.
Paulo Ricardo Ferreira
-
-
Caro Leonardo,
Executei a sua sugestão e a aplicação passou na função e executou o alert.
Por que será que não executa a abertura da página Logout.aspx (que tem o código abaixo)?
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim bll As New Controle_de_Acesso.BLL.Acessos bll.RegistrarSaida(Session("nomeUsuarioSaudacao")) End If End Sub
Tem algo a ver com a forma como estou mandando abrir a página?
window.open("Logout.aspx", "fechar");
Grato pela sua atenção.
Paulo Ricardo Ferreira
-
-
-
-
Antes de fechar o navegador é disparado o evento OnbeforeUnload, mapeia esse evento da Janela e dispara um POST com AJAX pra salvar a data e hora que ele fechou...
Caro Leonardo,
Como disparo esse POST com AJAX para poder chamar o meu método que vai registrar a saída do usuário?
Grato pela atenção.
Paulo Ricardo Ferreira