2014-04-16 13 views

risposta

4

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); 
} 
Problemi correlati