Перечислите все активные Сессии ASP.NET

BIRT работает вполне прилично.

43
задан Alex 24 September 2009 в 08:04
поделиться

3 ответа

Вы можете собирать данные о сессиях в событиях global.asax Session_Start и Session_End (только в настройках внутри процесса):

private static readonly List<string> _sessions = new List<string>();
private static readonly object padlock = new object();

 public static List<string> 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);
      }
  }

Вы должны рассмотреть возможность использования некоторых параллельных коллекций, чтобы снизить накладные расходы на синхронизацию. ConcurrentBag или ConcurrentDictionary. Или ImmutableList

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

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

34
ответ дан 26 November 2019 в 23:03
поделиться

Насколько мне известно, со стандартными сеансами в памяти это невозможно. Это то, с чем я боролся на прошлой неделе, и пришел к выводу, что это невозможно, если вы не используете сервер состояния сеанса. Если вы спросите меня, это выглядит довольно странно с точки зрения дизайна. : /

0
ответ дан 26 November 2019 в 23:03
поделиться

Попробуйте ввести следующий код

 for (int i = 0; i < Session.Keys.Count - 1; i++)
        {
            Label1.Text += Session.Keys.Get(i) + " - " + Session[i].ToString()+"<br/>";
        }
-17
ответ дан 26 November 2019 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: