Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if item exists in Cache (System.Web.Cache)?

Hi,

To check if the key already exists in cache I shoulde be able to do the following :

if(Cache["MyKey"] != null)

This does however not work? If I create an instance from the Cache class i will be able to get the object this way :

cache.Get("MyKey") or cache["MyKey"]

But even if I check for null like this :

if(cache["MyKey"] != null)

It will throw an NullRefException?

What am I doing wrong?

Edit1 :

This is how I instansiate the cache

private Cache cache
        {
            get {
                if (_cache == null)
                    _cache = new Cache();
                return _cache; }
        }
like image 614
Banshee Avatar asked Feb 01 '11 20:02

Banshee


1 Answers

Checking for a null value is how to test whether an object for a certain key is in the Cache. Therefore,

if(Cache["MyKey"] != null)

is correct.

However, you should not instantiate a new Cache object. You may use System.Web.HttpContext.Current.Cache instead. This is the instance of the Cache and lives in the application domain.

From MSDN:

One instance of this class is created per application domain, and it remains valid as long as the application domain remains active. Information about an instance of this class is available through the Cache property of the HttpContext object or the Cache property of the Page object.

like image 82
marapet Avatar answered Sep 20 '22 07:09

marapet