gpt4 book ai didi

c# - 在 asp.net mvc 应用程序中使用 memorycache 每次都会创建它

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:23 26 4
gpt4 key购买 nike

Environment:
asp.net mvc
iis

我已经围绕 memorycache 创建了一个包装器和具体类,在它的constrcutor 中我设置了 memoryCache

  public class AbijMemoryCache : IAbijMemoryCache
{
private readonly MemoryCache _cache;

public AbijMemoryCache()
{
if (_cache == null)
{

_cache = MemoryCache.Default;

}
}
}

然后在 unity 中只获取一个内存缓存实例,我使用了 ContainerControlledLifetimeManager

  container.RegisterType<IAbijMemoryCache, AbijMemoryCache>(new ContainerControlledLifetimeManager());

我使用以下代码在我的 homeController 中设置缓存

  var policy = new CacheItemPolicy();
_cache.Set(key, value, policy);

但在将其上传到 iis 缓存后,有时会变空。

检查

        _cache.Get(key) **`it gets null`**

为什么它变得空了?我该怎么办?

最佳答案

我发现 MemoryCache 是通过引用工作的,所以如果你确实将一个对象分配给 memoryCache,它将通过引用

  _cache.Set(key, value, policy); //value should not be an object.

您可以在缓存值之前使用序列化,这样就可以完成

 var cloneValue = SerializationCloner.DeepFieldClone(value);

关于c# - 在 asp.net mvc 应用程序中使用 memorycache 每次都会创建它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com