Хранение элементов в ObjectCache: невозможно получить старые значения

Я использую экземпляр MemoryCache.Default ObjectCache для хранения данных в приложении MVC; Каждый раз, когда я сохраняю какой-то элемент и, невольно читая его, я вижу, что элементы хранятся так, как ожидалось. Но когда создается новый экземпляр класса Cashing (я имею в виду класс, который использовал ObjectCache), я не могу получить доступ к старым значениям. один экземпляр для ObjectCache, но это не помогает мне.

//here is single instance of caching object
public class CacheSingleton
{
    private static CacheSingleton instance;

    private CacheSingleton() { cache = MemoryCache.Default; }

    public static CacheSingleton Instance
    {
        get 
        {
            if (instance == null)
            {
                instance = new CacheSingleton();
            }
            return instance;
        }
    }

    public ObjectCache cache { get; private set; }
}


    // and here is piece of caching class 
    .........
    private ObjectCache cache;


    public DefaultCacheProvider()
    {
        cache = CacheSingleton.Instance.cache;
    }

    public object Get(string key)
    {
        return cache[key];
    }

    public void Set(string key, object data, int cacheTime, bool isAbsoluteExpiration)
    {
        CacheItemPolicy policy = new CacheItemPolicy();
        if (isAbsoluteExpiration)
        {
            policy.AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime);
        }
        else
        {
            policy.SlidingExpiration = TimeSpan.FromMinutes(cacheTime);
        }

        cache.Add(new CacheItem(key, data), policy);
    }

    public bool IsSet(string key)
    {
        return (cache[key] != null);
    }

    public void Invalidate(string key)
    {
        cache.Remove(key);
    }

Кто-нибудь может объяснить, почему с каждым новым экземпляром класса кэширования (последний код) я не могу получить доступ к старым значениям. Спасибо.

0 ответов

Другие вопросы по тегам