当前位置:  开发笔记 > 后端 > 正文

如何从Web应用程序中找出ASP.NET中的会话大小?

如何解决《如何从Web应用程序中找出ASP.NET中的会话大小?》经验,为你挑选了2个好方法。

如何从Web应用程序中找出ASP.NET中的会话大小?



1> ddc0660..:

如果您试图在运行时而不是在调试跟踪中获取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)



2> 小智..:

上面答案中的代码一直给我相同的数字.这是最终为我工作的代码:

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

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有