वेब एप्लिकेशन से एएसपी.नेट में सत्र का आकार कैसे पता लगाएं?वेब एप्लिकेशन से एएसपी.नेट में सत्र का आकार कैसे पता लगाएं?
13
A
उत्तर
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
मुझे लगता है कि आप 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));
}
धन्यवाद। यही वही था जो मुझे चाहिए था। – GrZeCh
मुझे निम्नलिखित परिवर्तन करने की आवश्यकता है: लंबे कुल सत्रबेट = 0; चूंकि एम। लम्बाई लंबे समय तक लौटता है। लेकिन इसके अलावा यह कोड का एक अच्छा संक्षिप्त टुकड़ा है! लूप भी foreach किया जा सकता है। ;-) – Oliver
@ ओलिवर प्रतिक्रिया के लिए धन्यवाद। मैंने आपके द्वारा सुझाए गए समायोजन किए हैं। अब थोड़ा सा दिखता है। – ddc0660