Contando usuarios en línea usando asp.net

Debo crear un sitio web para el que necesito contar los usuarios en línea y mostrarlo en la página de inicio todo el tiempo. No me interesa aplicar módulos listos para usar para ello. Esto es lo que ya he hecho:

Agregando un archivo global.asax a mi proyecto

Escribiendo el siguiente fragmento de código en el archivo 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>

En realidad funciona bien, pero he encontrado el siguiente error: -> ¡Incluso si el usuario cierra el navegador, no se muestra el número real de usuarios en línea ya que el tiempo de espera de la sesión aún está vivo!

¿Hay alguna solución pero cambiando el intervalo de tiempo de espera de la sesión?

Respuestas a la pregunta(4)

Su respuesta a la pregunta