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

标签 asp.net session

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

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/8854176/

相关文章:

php - 无法执行登录功能。没有错误

java - Spring Boot中如何记住用户?

java - 无法使用类属性序列化 session

c# - SignalR 在集线器方法中等待很长时间

asp.net - Web 开发人员可用的最佳 HTML 所见即所得编辑器是什么?为什么?

c# - 在代码隐藏中使用 AJAX 错误传递 json 对象

c# - 对于除我在 ASP.NET 中的其他 IP 地址,返回 404

php - 当 iframe 调用网站时 session 不工作

asp.net - Javascript 采取脚本服务器端

node.js - NodeJS redis 连接 session ID 在应该保持不变时重新生成