2008-10-13 18 views

cevap

30

, böyle bir şey denemek isteyebilirsiniz:

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 esinlenerek)

+0

Teşekkürler. İhtiyacım olan buydu. – GrZeCh

+1

Aşağıdaki değişiklikleri yapmak için gerekli: long totalSessionBytes = 0; , çünkü m. Ama bunun dışında güzel bir özlü kod parçası! Döngü de foreach olabilir. ;-) – Oliver

+0

@Oliver Geri bildirim için teşekkürler. Önerdiğin ayarlamaları yaptım. Şimdi biraz daha güzel görünüyor. – ddc0660

0

Bu bilgileri, bir aspx sayfasının sayfa yönergesine Trace = "true" ekleyerek bulabilirsiniz. Daha sonra, sayfa yüklendiğinde, sanırım oturum bilgisi dahil olmak üzere, sayfa isteği ile ilgili çok sayıda ayrıntı görebilirsiniz.

Web.config dosyanıza bir satır ekleyerek izlemenin tamamını uygulamanızda izlemeyi de etkinleştirebilirsiniz. Bir şey gibi: Bunun yerine ayıklama izlemesi daha çalışma zamanı sırasında Oturum boyutunu almaya çalışıyorsanız

<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" 
localOnly="true"/> 
16

Yukarıdaki yanıttaki kod bana aynı numarayı vermeye devam etti. İşte sonunda benim için çalıştığı kod:

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)); 
} 
+1

Seri hale getirilmeden önce nesnenin boş olmadığından emin olmak için bir kontrol eklemelisiniz. – kheld

+0

Ben küçük olmak istemiyorum, ama aslında kB (kilobayt), kb (kilobits) değil :-) – Mikee

İlgili konular