Как узнать размер сеанса в ASP.NET из веб-приложения?

Как узнать размер сеанса в ASP.NET из веб-приложения?

Если вы пытаетесь получить размер сеанса во время выполнения, а не трассировку отладки, вы можете попробовать что-то вроде этого:

long totalSessionBytes = 0; BinaryFormatter b = new BinaryFormatter(); MemoryStream m; foreach(var obj in Session) { m = new MemoryStream(); b.Serialize(m, obj); totalSessionBytes += m.Length; } 

(Вдохновленный http://www.codeproject.com/KB/session/exploresessionandcache.aspx )

Код в ответе выше оставил мне тот же номер. Вот код, который, наконец, работал для меня:

 private void ShowSessionSize() { Page.Trace.Write("Session Trace Info"); long totalSessionBytes = 0; System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); System.IO.MemoryStream m; foreach (string key in Session) { var obj = Session[key]; m = new System.IO.MemoryStream(); b.Serialize(m, obj); totalSessionBytes += m.Length; Page.Trace.Write(String.Format("{0}: {1:n} kb", key, m.Length / 1024)); } Page.Trace.Write(String.Format("Total Size of Session Data: {0:n} kb", totalSessionBytes / 1024)); } 

Я думаю, вы можете найти эту информацию, добавив Trace = “true” в директиву страницы aspx. Затем, когда загружается страница, вы можете увидеть большое количество деталей относительно запроса страницы, включая информацию о сеансе, о которой я думаю.

Вы также можете включить трассировку во всем приложении, добавив строку в файл web.config. Что-то вроде:

  
  • Пример сеанса запроса диапазона HTTP
  • Тайм-аут аутентификации форм против сеанса
  • Давайте будем гением компьютера.