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

C# 在asp.net mvc应用程序中使用memorycache,每次都会创建它,c#,asp.net-mvc,iis,memorycache,C#,Asp.net Mvc,Iis,Memorycache,我已经围绕memorycache创建了一个包装器和具体类,我在它的构造函数中设置了memorycache Environment: asp.net mvc iis 然后在unity中,为了只获取一个内存缓存实例,我使用了ContainerControlledLifetimeManager public class AbijMemoryCache : IAbijMemoryCache { private readonly MemoryCache _cache;

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

Environment:
      asp.net mvc
      iis
然后在unity中,为了只获取一个内存缓存实例,我使用了ContainerControlledLifetimeManager

  public class AbijMemoryCache : IAbijMemoryCache
{
    private readonly MemoryCache _cache;

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

            _cache = MemoryCache.Default;

        }
    }
}
但在上传到iis缓存后,有时会变空

检查

  var policy = new CacheItemPolicy();
  _cache.Set(key, value, policy);
为什么它会变空?
我该怎么办?

我发现MemoryCache是通过引用工作的,所以如果您将一个对象分配给MemoryCache,它会工作 参照

        _cache.Get(key) **`it gets null`**
可以在缓存值之前使用序列化,这样就可以像

  _cache.Set(key, value, policy); //value should not be an object.
  _cache.Set(key, value, policy); //value should not be an object.
 var cloneValue = SerializationCloner.DeepFieldClone(value);