20

WebアプリケーションからASP.NETのセッションのサイズを確認するにはどうすればよいですか?

4

4 に答える 4

31

デバッグ トレースではなく実行時に Session のサイズを取得しようとしている場合は、次のようにしてみてください。

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に触発)

于 2008-10-13T17:42:09.633 に答える
24

上記の回答のコードは、私に同じ番号を与え続けました。最終的に私のために働いたコードは次のとおりです。

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));
}
于 2011-03-16T19:07:15.083 に答える
0

aspx ページの page ディレクティブにTrace="true"を追加すると、その情報を見つけることができると思います。次に、ページが読み込まれると、セッション情報を含む、ページリクエストに関する多数の詳細が表示されます。

web.config ファイルに行を追加して、アプリケーション全体でトレースを有効にすることもできます。何かのようなもの:

<trace enabled="true" requestLimit="10" pageOutput="true" traceMode="SortByTime" 
 localOnly="true"/>
于 2008-10-13T16:20:36.007 に答える