System.Runtime.Caching在本地工作,但在部署到Web服务器时不工作

时间:2018-08-07 19:57:28

标签: c# .net asp.net-web-api memorycache

我在具有多个库的整个应用程序中使用以下类CacheHelper。当我在本地进行测试时,缓存工作正常,但是当将其部署到Web服务器时,它似乎不起作用(GET返回null)。有什么想法吗?

public class CacheHelper
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public object GetValue(string key)
    {
        var memoryCache = MemoryCache.Default;
        return memoryCache.Get(key);
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="key"></param>
    /// <param name="value"></param>
    /// <param name="absExpiration"></param>
    /// <returns></returns>
    public bool Add(string key, object value, DateTimeOffset absExpiration)
    {
        var memoryCache = MemoryCache.Default;
        return memoryCache.Add(key, value, absExpiration);
    }

    /// <summary>
    /// 
    /// </summary>
    /// <param name="key"></param>
    public void Delete(string key)
    {
        var memoryCache = MemoryCache.Default;
        if (memoryCache.Contains(key)) memoryCache.Remove(key);
    }
}

在我的整个应用程序项目中的用法:

var cacheHelper = new CacheHelper();
var cachedValue = cacheHelper.GetValue(keyName);

这是我的设置方式:

cacheHelper.Add(keyName, cacheValue, DateTimeOffset.UtcNow.AddMinutes(30));

1 个答案:

答案 0 :(得分:-2)

如果要在控制器中使用它,则很可能会应要求使用新实例。