C# 添加列表后,Nopcommerce缓存似乎为空
我在NopCommerce中遇到C# 添加列表后,Nopcommerce缓存似乎为空,c#,.net,nopcommerce,C#,.net,Nopcommerce,我在NopCommerce中遇到cacheManager问题 我有一个nopCommerce产品列表,以IPagedList 我将它们添加到我的cachemanager中,如下所示: \u cacheManager.Set(“SearchResult”,products.ToList(),5) 现在每当我试图像这样检索它们时: var searchresults = new List<Product>(); if (_cacheManager.IsSet("Sea
cacheManager
问题
我有一个nopCommerce产品列表,以IPagedList
我将它们添加到我的cachemanager中,如下所示:
\u cacheManager.Set(“SearchResult”,products.ToList(),5)代码>
现在每当我试图像这样检索它们时:
var searchresults = new List<Product>();
if (_cacheManager.IsSet("SearchResult"))
{
searchresults = _cacheManager.Get<List<Product>>("SearchResult");
}
var searchresults=新列表();
if(_cacheManager.IsSet(“SearchResult”))
{
searchresults=_cacheManager.Get(“SearchResult”);
}
它只是空的,就像isSet的计算结果是false
在添加缓存管理器之前,我尝试\u cacheManager.Clear()
,但这也不起作用。我这里的点子快用完了。有人有线索吗
我将此作为检索的来源:
我通过添加这个解决了这个问题。_cacheManager=new MemoryCacheManager()
而不是
this.\u cacheManager=cacheManager
,其中cacheManager是ICacheManager
的一个实例。我想问题在于您不能在http请求之间缓存数据,但我确信您可以在同一请求期间检索该数据
NopCommerce有两个缓存管理器。两者都在DependencyRegister.cs中声明:
builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_static").SingleInstance();
builder.RegisterType<PerRequestCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_per_request").InstancePerHttpRequest();
我鼓励您使用这种方法,而不是为其他开发人员添加对MemoryCacheManager
的静态引用。应使用依赖项注入检索缓存管理器实例。虽然这个答案确实有效,但它不是正确的答案。这一定是答案,救了我一整天,非常感谢
builder.RegisterType<ProductTagService>().As<IProductTagService>()
.WithParameter(ResolvedParameter.ForNamed<ICacheManager>("nop_cache_static"))
.InstancePerHttpRequest();