MemoryCache不接受任何有效期限

问题描述

我有一个非常简单的代码,但是它的功能完全不可思议。这是一个简单的Cache抽象,如下所示:

public class CacheAbstraction
{
    private MemoryCache _cache;

    public CacheAbstraction()
    {
        _cache = new MemoryCache(new MemoryCacheOptions { });
    }

    public async Task<T> GetItemAsync<T>(TimeSpan duration,Func<Task<T>> factory,[CallerMemberName] string identifier = null ) where T : class
    {
        return await _cache.GetorCreateAsync<T>(identifier,async x =>
        {
            x.SetAbsoluteExpiration(DateTime.UtcNow.Add(duration));
            T result = null;
            result = await factory();
            return result;
        });
    }
}

现在有趣的部分:我正在传递1h-1d的有效期

如果我在测试套件中运行它,一切都很好。

如果我将其作为.net核心应用程序运行,则到期时间始终设置为“现在”,并且该项在下一次缓存检查时到期。 WTF!?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...