C# 添加列表后,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

我在NopCommerce中遇到
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();