c# - MemoryCache 在第一次到期后总是返回 "null"

标签 c# asp.net-mvc iis memorycache

我有以下问题,我有这种缓存管理:

public class CacheManager : ICacheManager {

    private readonly ObjectCache cache;

    public CacheManager() {
        this.cache = MemoryCache.Default;
    }

    public void AddItem(string key, object itemToCache, double duration) {
        var end = DateTime.Now.AddSeconds(duration);
        this.cache.Add(key, itemToCache, end);
    }

    public T Get<T>(string key) where T : class {
        try {
            return (T)this.cache[key];
        }
        catch (Exception ex) {
            return null;
        }
    }

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

非常简单。

编辑 I(问题文本中的错误修复)

问题:当任何键的缓存过期时,以下所有获取缓存中任何对象的调用都会返回“null”。我检查了 key 并且总是正确的。

问题只发生在我电脑上的客户端服务器上,我的服务器运行正常。

谢谢。

编辑二(高级)

当我们重新启动客户服务器中的应用程序池时,您的问题在几个小时内得到解决。

我们的站点有一个特定的应用程序池,具有以下设置:

管道管理器模式:集成 架构:v4.0 启用 32 位应用程序:True。

其他设置,例如默认。

在服务器上我们有 2 个站点,一个启用了“启用 32 位应用程序”,如果两者都被禁用,则会发生错误,但不知道这是否是问题所在。

编辑 III(高级)

由于未能解决问题,我们决定切换到Httpcontext.Current.Cache ,我们就可以解决问题。我们想要另一种解决方案并继续使用 MemoryCache但没有结果。

最佳答案

重新提出一个老问题,但我相信这个问题是由于一个错误造成的,该错误仅在 ASP.NET 4.5 中修复,但有一个针对早期版本的修补程序。

查看此线程:MemoryCache Empty : Returns null after being set

关于c# - MemoryCache 在第一次到期后总是返回 "null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10254708/

相关文章:

c# - 从文件系统中删除文件时线程被中止错误

c# - 用年份格式化 TimeSpan

c# - 覆盖 GetEnumerator 的默认行为

c# - .NET 2.0 还是 3.5?

javascript - 如何使用 JSON.NET 通过 ASP.NET MVC 传递 JSON 日期值?

asp.net - IIS - 无法通过 ip 地址而不是 localhost 访问页面

c# - 如何提高网络摄像头视频输入的帧率?埃姆古简历

JQuery 发布 URL

c# - 具有不同参数名称的多个参数的 MVC 路由

asp.net - ASP.NET的Comet实现?