كيفية معرفة حجم جلسة في ASP.NET من تطبيق ويب؟

StackOverflow https://stackoverflow.com/questions/198082

  •  10-07-2019
  •  | 
  •  

سؤال

وكيفية معرفة حجم جلسة في 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));
}

وأعتقد أنك يمكن أن تجد هذه المعلومات عن طريق إضافة على تتبع = "صحيح" لتوجيه صفحة من صفحة aspx. ثم عند تحميل الصفحة يمكنك ان ترى عددا كبيرا من التفاصيل المتعلقة طلب صفحة، بما في ذلك معلومات جلسة العمل على ما أعتقد.

ويمكنك أيضا تمكين التتبع في التطبيق الخاص بك بأكمله من خلال إضافة خط إلى ملف web.config. شيء من هذا القبيل:

<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" 
 localOnly="true"/>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top