views:

177

answers:

3

I have to maintain an old asp.net application, and need to disable all access to the Cache object for debugging purposes. There are hundreds of pages that use the structure:

if (Cache["myobject"] != null)
{
   //get data from the cache
   //...
}
else
{
   //go to the DB, load the cache and send it to the client
}

I know I should refactor this code but, in the meantime, do you know of any simple and centralized way to empty (or disable) the Cache object?

+3  A: 

Not sure if it will be of any help, but you can play with cache settings and set, say, privateBytesLimit to 1 and privateBytesPollTime to 00:00:01. My guess is that ASP.NET should basically remove all entries as soon as they're added. However, this might not be the case.

Anton Gogolev
It works. Thanks. I don't think it's a good solution for production environments (my app now fires BeginRequest events all the time), but it's perfect testing.
santiiiii
+3  A: 

I haven't used it but this helper might give you what you're after.

dove
Looks great. It's what I should do when I come around to re-engineering the application.
santiiiii
+2  A: 

If you just want to clear the cache once, you can use this:

   foreach ( System.Collections.DictionaryEntry entry in HttpContext.Current.Cache )
        HttpContext.Current.Cache.Remove( entry.Key as String );

Otherwise @Anton Gogolev solution looks good to prevent new entries.

Locksfree