C# 从MemoryCache中删除所有项目

C# 从MemoryCache中删除所有项目,c#,.net,C#,.net,我想删除MemoryCache中的所有项目 我已经尝试过的: var listDBCalls = ((FixedSizedQueue<DalCacheDto>)MemoryCache.Default.Get($"DAL_CACHE_{HttpContext.Current?.User?.Identity?.Name}"))?.ToList(); listDBCalls.clear(); var listDBCalls=((FixedSizedQueue)Memo

我想删除MemoryCache中的所有项目

我已经尝试过的:

var listDBCalls = ((FixedSizedQueue<DalCacheDto>)MemoryCache.Default.Get($"DAL_CACHE_{HttpContext.Current?.User?.Identity?.Name}"))?.ToList();
listDBCalls.clear();
var listDBCalls=((FixedSizedQueue)MemoryCache.Default.Get($“DAL_缓存{HttpContext.Current?.User?.Identity?.Name}”))?.ToList();
listDBCalls.clear();
如果我在调试器中查看这段代码,就会发现listDBCalls实际上是空的。但是,再次呼吁:

((FixedSizedQueue<DalCacheDto>)MemoryCache.Default.Get($"DAL_CACHE_{HttpContext.Current?.User?.Identity?.Name}"))?.ToList()
((FixedSizedQueue)MemoryCache.Default.Get($“DAL_CACHE{HttpContext.Current?.User?.Identity?.Name}”))?.ToList()

告诉我所有的东西都还在。为什么会这样?

避免使用默认内存缓存以获得更多控制。 创建自己的内存缓存(例如,作为静态类的静态属性),当需要擦除它时,只需创建一个新的缓存来替换旧的缓存即可。不要忘记调用dispose方法

这似乎是一条路:

编辑 当我读你的代码时,我不确定你想做什么。 如果要删除某个特定条目(似乎是这样),可以使用该方法


这是因为它创建了一个包含您请求的元素的列表。可以清空列表,但缓存中仍存在元素。即使对象是共享的,列表也独立于缓存。还要注意缓存键。所有未经身份验证/匿名用户最终都会使用相同的密钥--这可能是一个问题,具体取决于您使用该密钥的方式/目的
MemoryCache.Default.Remove($"DAL_CACHE_{HttpContext.Current?.User?.Identity?.Name}")