Contando usuários online usando asp.net

Eu estou para criar um site para o qual eu preciso contar os usuários on-line e mostrá-lo na página inicial o tempo todo. Não estou interessado em aplicar módulos prontos para uso. Aqui está o que eu já fiz:

Adicionando um arquivo Global.asax ao meu projeto

Escrevendo o seguinte trecho de código no arquivo Global.asax:

<code>void Application_Start(object sender, EventArgs e) 
{
    Application["OnlineUsers"] = 0;
}

void Session_Start(object sender, EventArgs e) 
{
    Application.Lock();
    Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1;
    Application.UnLock();
}

void Session_End(object sender, EventArgs e) 
{
    Application.Lock();
    Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1;
    Application.UnLock();
}
</code>

Na verdade, funciona bem, mas eu encontrei o seguinte bug: -> Mesmo se o usuário fechar o navegador, a contagem real de usuários online não é mostrada, pois o tempo limite da sessão ainda está ativo!

Existe alguma solução a não ser alterar o intervalo de tempo limite da sessão?

questionAnswers(4)

yourAnswerToTheQuestion