2008-10-13 2 views

उत्तर

30

आप बल्कि डिबग ट्रेसिंग की तुलना में रनटाइम के दौरान सत्र के आकार पाने के लिए कोशिश कर रहे हैं, तो आप कुछ इस तरह की कोशिश करना चाहते हो सकता है:

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 से प्रेरित होकर)

+0

धन्यवाद। यही वही था जो मुझे चाहिए था। – GrZeCh

+1

मुझे निम्नलिखित परिवर्तन करने की आवश्यकता है: लंबे कुल सत्रबेट = 0; चूंकि एम। लम्बाई लंबे समय तक लौटता है। लेकिन इसके अलावा यह कोड का एक अच्छा संक्षिप्त टुकड़ा है! लूप भी foreach किया जा सकता है। ;-) – Oliver

+0

@ ओलिवर प्रतिक्रिया के लिए धन्यवाद। मैंने आपके द्वारा सुझाए गए समायोजन किए हैं। अब थोड़ा सा दिखता है। – ddc0660

0

मुझे लगता है कि आप Trace = "true" को एएसपीएक्स पृष्ठ के पृष्ठ निर्देश में जोड़कर उस जानकारी को पा सकते हैं। फिर जब पृष्ठ लोड होता है तो आप पेज अनुरोध के बारे में बड़ी संख्या में विवरण देख सकते हैं, जिसमें सत्र जानकारी शामिल है।

आप अपनी वेब.कॉन्फिग फ़ाइल में एक लाइन जोड़कर अपने पूरे एप्लिकेशन में ट्रेसिंग भी सक्षम कर सकते हैं। कुछ की तरह:

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

उपरोक्त उत्तर में दिए गए कोड ने मुझे वही नंबर दिया है। यहां कोड है जो आखिरकार मेरे लिए काम करता है:

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

आपको यह सुनिश्चित करने के लिए एक चेक जोड़ना चाहिए कि क्रमबद्ध करने की कोशिश करने से पहले ऑब्जेक्ट शून्य नहीं है। – kheld

+0

मैं छोटा होना नहीं चाहता, लेकिन आकार वास्तव में केबी (किलोबाइट्स) में है, केबी (किलोबिट्स) नहीं :-) – Mikee

संबंधित मुद्दे