Frage

Wie Größe der Sitzung in ASP.NET, um herauszufinden, von Web-Anwendung?

War es hilfreich?

Lösung

Wenn Sie versuchen, die Größe der Session während der Laufzeit zu bekommen, anstatt im Debug-Tracing, könnte man so etwas versuchen:

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

(inspiriert von http://www.codeproject.com/KB/session/exploresessionandcache aspx )

Andere Tipps

Der Code in der Antwort oben hielt ihm die gleiche Nummer zu geben. Hier ist der Code, der schließlich für mich gearbeitet:

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

Ich glaube, Sie diese Informationen finden kann durch Zugabe von Trace = „true“ auf die Seite Direktive einer aspx Seite. Dann, wenn die Seite geladen wird Sie eine große Anzahl von Details in Bezug auf die Seitenanfrage sehen können, einschließlich Sitzungsinformationen, denke ich.

Sie können auch ermöglichen, indem Sie eine Zeile zu Ihrer web.config-Datei in Ihrer gesamten Anwendung zu verfolgen. So etwas wie:

<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" 
 localOnly="true"/>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top