Question

Je modifier un site Château-monorail que j'ai hérité et a trouvé qu'il serait utile de voir la liste des utilisateurs en ligne. Actuellement, il existe des filtres qui déterminent qui peut accéder à quelles parties du site afin que je puisse établir une distinction dans les sessions de journalisées dans les sessions non connecté. Est-il un moyen facile d'obtenir une liste de sessions actives afin que je puisse alors travailler qui est connecté?

Était-ce utile?

La solution 2

Voici la solution que je fini avec:

(Avec l'aide de: https://stackoverflow.com/q/1470571/126785 et les commentaires de Ken Egozi)

En Global.asax.cs:

private static readonly object padlock = new object();
private static Dictionary<string,SessionData> sessions = new Dictionary<string,SessionData>();
public static Dictionary<string, SessionData> Sessions
{
    get { lock (padlock) { return sessions; } }
}

public struct SessionData
{
    public string Name { get; set; }
    public int AccountId { get; set; }
    public string CurrentLocation { get; set; }
}

protected void Session_Start(object sender, EventArgs e)
{
    Sessions.Add(Session.SessionID, new SessionData());
}

protected void Session_End(object sender, EventArgs e)
{
    Sessions.Remove(Session.SessionID);
}

public static void SetSessionData(string sessionId, int accountId, string name, string currentLoc)
{
    Sessions.Remove(sessionId);
    Sessions.Add(sessionId, new SessionData { AccountId = accountId, CurrentLocation = currentLoc, Name = name });
}

public static void SetCurrentLocation(string sessionId, string currentLoc)
{
    SessionData currentData = Sessions[sessionId];
    Sessions.Remove(sessionId);
    Sessions.Add(sessionId, new SessionData { AccountId = currentData.AccountId, CurrentLocation = currentLoc, Name = currentData.Name });
}

Ensuite, lorsque vous vous connectez:

Global.SetSessionData(((HttpSessionStateContainer)Session.SyncRoot).SessionID,account.Id,account.Name,"Logged In");

Maintenant, je juste besoin de travailler le meilleur endroit pour mettre à jour l'emplacement à partir. Les appels de chaque fonction pourrait être un fastidieux bits!

Autres conseils

Je crois qu'il ny a pas un moyen facile, à moins que vous stockez vos informations de connexion de l'utilisateur dans la base de données, ou une variable d'application, vous ne pouvez pas savoir combien de sessions actives il y a.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top