public override void Remove(string key)
        {
            InMemoryOutputCacheItem item = null;

            if (_cache.TryGetValue(key, out item))
            {
                _cache.Remove(key);
            }
        }
        public override object Get(string key)
        {
            InMemoryOutputCacheItem item = null;

            if (_cache.TryGetValue(key, out item))
            {
                if (item.UtcExpiry < DateTime.UtcNow)
                {
                    Remove(key);
                    return(null);
                }
                return(item.Value);
            }
            return(null);
        }
        public override void Set(string key, object entry, DateTime utcExpiry)
        {
            var item = new InMemoryOutputCacheItem(entry, utcExpiry);

            lock (_syncLock)
            {
                if (_cache.ContainsKey(key))
                {
                    _cache[key] = item;
                }
                else
                {
                    _cache.Add(key, item);
                }
            }
        }