C# 在asp.net mvc应用程序中使用memorycache,每次都会创建它
我已经围绕memorycache创建了一个包装器和具体类,我在它的构造函数中设置了memorycacheC# 在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;
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);