Questo dovrebbe essere un po 'preciso nel visualizzare il conteggio degli utenti. Utilizza una cache per memorizzare l'indirizzo IP dell'utente e restituisce un conteggio dei singoli IP. Se due persone sono dietro lo stesso proxy, lo conteranno come una sola persona.
using System.Runtime.Caching;
public int UsersOnlineCount
{
get
{
return MemoryCache.Default.Where(kv => kv.Value.ToString() == "User").Count();
}
}
Il miglior modo di fare in modo che tutti viene aggiunto alla cache è quello di definire alcuni BaseController
con questo nel costruttore ...
public BaseController() : base()
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTime.UtcNow.AddMinutes(20);
MemoryCache.Default.Add(System.Web.HttpContext.Current.Request.UserHostAddress, "User", policy);
}
ASP.NET identità non fornisce alcuna funzione per ottenere il numero di di utenti onlines. Dovrai implementare la tua logica. – meziantou