Wie Größe der Sitzung von Web-Anwendung in ASP.NET, um herauszufinden?
Frage
Wie Größe der Sitzung in ASP.NET, um herauszufinden, von Web-Anwendung?
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"/>