In the end I cludged it using a bit of hacked together reflection:
<%@ Page language="c#" AutoEventWireup ="false" %>
<%@ Import Namespace="Syst em.Collections" %>
<%@ Import Namespace="Syst em.Reflection" %>
<%@ Import Namespace="Syst em.Text" %>
<%@ Import Namespace="Syst em.Web.Caching" %>
<script runat=server>
override protected void OnInit(EventArg s e)
{
this.Load += new System.EventHan dler(this.Page_ Load);
base.OnInit(e);
}
private const string row = "<tr><td>{0 }</td><td>{1}</td><td>{2}</td></tr>";
private void Page_Load(objec t sender, System.EventArg s e)
{
StringBuilder outHtml = new StringBuilder(5 12);
outHtml.Append( "<table cellpadding=0 cellspacing=0 border=1>");
outHtml.Append( "<tr><td>Ke y</td><td>Value</td><td>Type</td></tr>");
// Grap the CacheInternal cache object from Cache using reflection
Type cacheType = Cache.GetType() ;
FieldInfo fieldCacheInter nal = cacheType.GetFi eld("_cacheInte rnal",
BindingFlags.De claredOnly | BindingFlags.No nPublic | BindingFlags.In stance);
Object cacheInternal = fieldCacheInter nal.GetValue(Ca che);
Hashtable _entries = (Hashtable)
cacheInternal.G etType().GetFie ld("_entries", BindingFlags.De claredOnly |
BindingFlags.No nPublic | BindingFlags.In stance).GetValu e(cacheInternal );
outHtml.Append( "<tr><td colspan=3>Count :" + _entries.Count + "</td>");
foreach (DictionaryEntr y entry in _entries)
{
Type typeCacheEntry = entry.Value.Get Type();
FieldInfo fldKey = typeCacheEntry. BaseType.GetFie ld("_key",
BindingFlags.De claredOnly | BindingFlags.No nPublic | BindingFlags.In stance);
FieldInfo fldValue = typeCacheEntry. GetField("_valu e",
BindingFlags.De claredOnly | BindingFlags.No nPublic | BindingFlags.In stance);
outHtml.Append( string.Format(r ow,
fldKey.GetValue (entry.Value).T oString(),
fldValue.GetVal ue(entry.Value) .ToString(),
fldValue.GetVal ue(entry.Value) .GetType().ToSt ring()));
}
literalOut.Text = outHtml.ToStrin g();
}
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Cache</title>
<meta name="GENERATOR " Content="Micros oft Visual Studio .NET 7.1">
<meta name="CODE_LANG UAGE" Content="C#">
<meta name="vs_defaul tClientScript" content="JavaSc ript">
<meta name="vs_target Schema"
content="http://schemas.microso ft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING= "GridLayout ">
<form id="Form1" method="post" runat="server">
<asp:Literal id="literalOut " runat="server"> </asp:Literal>
</form>
</body>
</HTML>
Ed.
"Edward Wilde" <ew****@hotmail .com> wrote in message
news:%2******** *******@TK2MSFT NGP10.phx.gbl.. .
Hi,
Does anyone know how to examine items in the ASP.NET cache that are added
using the OutputCache directive in framework 1.1
i.e.
<%@ OutputCache Duration="300" VaryByParam="No ne"
VaryByCustom="c mscontrol,cmsro le"%>
By examine I mean see their value, key and expiration time.
Cheers Ed.