Как проверить, существует ли элемент в кэше (System.Сеть.Кэш)?
Привет,
чтобы проверить, существует ли ключ в кэше, я должен сделать следующее:
if(Cache["MyKey"] != null)
это, однако, не работает? Если я создам экземпляр из класса Cache, я смогу получить объект таким образом:
cache.Get("MyKey") or cache["MyKey"]
но даже если я проверяю null, как это:
if(cache["MyKey"] != null)
это вызовет исключение NullRefException?
что я делаю не так?
Edit1 :
это, как я instansiate кэш
private Cache cache
{
get {
if (_cache == null)
_cache = new Cache();
return _cache; }
}
2 ответов
проверка значения null-это проверка того, находится ли объект для определенного ключа в кэше. Следовательно,
if(Cache["MyKey"] != null)
является правильным.
однако не следует создавать экземпляр нового объекта кэша. Вы можете использовать System.Web.HttpContext.Current.Cache
вместо. Это экземпляр кэша и живет в домене приложения.
С MSDN:
создается один экземпляр этого класса для каждого домена приложения, и он остается действует как долго в качестве приложения домен остается активным. Информация об экземпляре этого класса доступно через свойство Cache объекта HttpContext или кэша свойство объекта Page.
вы должны проверить, не является ли кэш Null & post, который проверяет, существует ли ключ или нет (с помощью .Содержит метод).
if (myCache != null && myCache.Contains("keyName") && myCache.Get("keyName") != null)
{
myDS = (DataSet)myCache.Get("keyName");
}