我需要在某些时刻检查会话大小。我怎么能得到这个?
我必须尝试在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界面。
答案 0 :(得分:0)
取决于您实施标签的方式
Glimpse.Core.Extensibility.ITab
Glimpse.Core.Extensibility.TabBase
,Glimpse.Core.Extensibility.TabBase<T>
或Glimpse.AspNet.Extensibility.AspNetTab
您必须确保实施/覆盖RuntimeEvent ExecuteOn
属性,使其在RuntimeEvent.BeginSessionAccess
或RuntimeEvent.EndSessionAccess
因为默认情况下它是RuntimeEvent.EndRequest
,这对于会话访问来说太迟了