我如何检查Asp.Net WebForms会话大小

时间:2014-02-24 06:54:25

标签: c# asp.net session webforms glimpse

我需要在某些时刻检查会话大小。我怎么能得到这个?

我必须尝试在Glimpse中创建自定义选项卡,但会话对象始终为null:

public override object GetData(Glimpse.Core.Extensibility.ITabContext context)  
{
    var result = new List<string[]> { new[] { "Object", "Number of bytes" } };

    HttpContextBase context1 = context.GetHttpContext();
    HttpSessionStateBase session = context1.Session;

    if (session != null)
    {
        long totalSessionBytes = 0;
        BinaryFormatter b = new BinaryFormatter();
        MemoryStream m;
        foreach (var obj in session)
        {
            m = new MemoryStream();
            b.Serialize(m, obj);
            result.Add(new[] { obj.ToString(), m.Length.ToString() });
            totalSessionBytes += m.Length;
        }

        result.Add(new[] { "Total", totalSessionBytes.ToString() });
    }
    else
    {
        result.Add(new[] { "Session", "Null" });
    }
    return result; 
}

我也试过这个:

https://github.com/jasonrclark/Glimpse/commit/89416a7e7934d98a02839fc7976a288ca18f6d60

但我找不到任何IGlimpsePlugin界面。

1 个答案:

答案 0 :(得分:0)

取决于您实施标签的方式

  • 实施Glimpse.Core.Extensibility.ITab
  • 继承自Glimpse.Core.Extensibility.TabBaseGlimpse.Core.Extensibility.TabBase<T>Glimpse.AspNet.Extensibility.AspNetTab

您必须确保实施/覆盖RuntimeEvent ExecuteOn属性,使其在RuntimeEvent.BeginSessionAccessRuntimeEvent.EndSessionAccess

运行

因为默认情况下它是RuntimeEvent.EndRequest,这对于会话访问来说太迟了