gpt4 book ai didi

asp.net - 获取 ASP.NET 中所有事件 session 的列表

转载 作者:行者123 更新时间:2023-11-30 13:01:00 24 4
gpt4 key购买 nike

我知道哪个用户使用以下代码行登录:

Session["loggedInUserId"] = userId;

我的问题是我如何知道哪些用户已登录,以便其他用户可以看到哪些用户当前已登录。

换句话说,我可以得到所有活跃的“loggedInUserId” session 吗?

最佳答案

我没有尝试 rangitatanz 解决方案,但我使用了另一种方法,它对我来说效果很好。

private List<String> getOnlineUsers()
{
List<String> activeSessions = new List<String>();
object obj = typeof(HttpRuntime).GetProperty("CacheInternal", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null, null);
object[] obj2 = (object[])obj.GetType().GetField("_caches", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
for (int i = 0; i < obj2.Length; i++)
{
Hashtable c2 = (Hashtable)obj2[i].GetType().GetField("_entries", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj2[i]);
foreach (DictionaryEntry entry in c2)
{
object o1 = entry.Value.GetType().GetProperty("Value", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(entry.Value, null);
if (o1.GetType().ToString() == "System.Web.SessionState.InProcSessionState")
{
SessionStateItemCollection sess = (SessionStateItemCollection)o1.GetType().GetField("_sessionItems", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(o1);
if (sess != null)
{
if (sess["loggedInUserId"] != null)
{
activeSessions.Add(sess["loggedInUserId"].ToString());
}
}
}
}
}
return activeSessions;
}

关于asp.net - 获取 ASP.NET 中所有事件 session 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com