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

C# System.Runtime.Caching在本地工作,但部署到web服务器时不工作,c#,.net,asp.net-web-api,memorycache,C#,.net,Asp.net Web Api,Memorycache,我有下面的CacheHelper类,我在有多个库的应用程序中使用它。当我在本地服务器上测试缓存时,缓存工作正常,但当它部署到Web服务器时,它似乎不工作(GET返回null)。有什么想法吗 public class CacheHelper { /// <summary> /// /// </summary> /// <param name="key"></param> /// <returns>

我有下面的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);
    }
}
下面是我如何设置它的:

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

如果您在控制器中使用它,则很可能会根据请求使用新实例

您的站点是否托管在web场中?是否有东西经常循环使用应用程序池?是否有东西意外调用了
Delete
?否,删除在一个位置,除非主动执行,否则不会调用它们。站点应用程序池每1740分钟进行一次回收。请使用:并可能进行一些日志记录,以确定项目何时添加到缓存,然后删除。可能有助于解决您的问题。“除非主动执行,否则不会调用它们”-可能有什么东西意外调用了它?“站点应用程序池每1740分钟回收一次”-你知道其他事情会导致它回收吗?(比如我编辑你的web.config文件,举个例子)。我认为您需要添加一些日志来帮助诊断。另外,我只是偶然发现了你的回复,你需要在回复别人的时候给他们贴上@标签以引起他们的注意。这意味着这在我的本地网站上也不起作用。但确实如此。
cacheHelper.Add(keyName, cacheValue, DateTimeOffset.UtcNow.AddMinutes(30));