Net Core MemoryCache 未按请求重置

Net Core MemoryCache not resetting per request

.Net Core 3.0.我有一个注入 IMemoryCache 的回购协议。 Repo 注册为 Transient。我希望缓存是 cleared/reset PER 请求,但是这并没有发生。它保留从上一个请求插入的数据。我该怎么做才能根据请求重新创建 MemoryCache?

public OrganizationRepository(
   IMemoryCache cache)
{
    m_cache = cache;
    // cache still has data in entries for subsequent requests
}

注册人数:

services.AddTransient<IOrganizationRepository, OrganizationRepository>();

这似乎有效:

services.AddScoped<MemoryCache, MemoryCache>();

然后将其作为 MemoryCache 注入

您可以轻松编写自己的内存缓存。

private readonly Dictionary<string, List<Product>> _localCache = new Dictionary<string, List<Product>>();

public async Task<List<Product>> LocalListAsync(bool invalidateCache = false)
{
    const string cacheKey = "ProductList";
    if (invalidateCache)
    {
        _localCache.Remove(cacheKey);
    }

    if (_localCache.TryGetValue(cacheKey, out var list))
    {
        return list;
    }

    await _products
        .Include(x => x.ProductCategory)
        .LoadAsync();

    list = _products.Local.ToList();
    _localCache.Add(cacheKey, list);
    return list;
}