List all active ASP.NET Sessions

后端 未结 9 1887
情话喂你
情话喂你 2020-11-28 22:39

How can I list (and iterate through) all current ASP.NET sessions?

9条回答
  •  不知归路
    2020-11-28 23:01

    You can collect data about sessions in global.asax events Session_Start and Session_End (only in in-proc settings):

    private static readonly List _sessions = new List();
    private static readonly object padlock = new object();
    
     public static List Sessions
     {
           get
           {
                return _sessions;
           }
      }
    
      protected void Session_Start(object sender, EventArgs e)
      {
          lock (padlock)
          {
              _sessions.Add(Session.SessionID);
          }
      }
      protected void Session_End(object sender, EventArgs e)
      {
          lock (padlock)
          {
              _sessions.Remove(Session.SessionID);
          }
      }
    

    You should consider use some of concurrent collections to lower the synchronization overhead. ConcurrentBag or ConcurrentDictionary. Or ImmutableList

    https://msdn.microsoft.com/en-us/library/dd997373(v=vs.110).aspx

    https://msdn.microsoft.com/en-us/library/dn467185.aspx

提交回复
热议问题