HY,
我创建了一个自定义List,它试图缓存,但是当从缓存中返回时,缓存的对象数为0.示例代码如下:
List<CategoryEntry> categs = (List<CategoryEntry>)EPiServer.CacheManager.Get("test");
if(categs == null || categs.Count == 0)
{
categs = ConstructCategories();
EPiServer.CacheManager.Add("test", categs);
}
//Further down displaying the categories
用例:
First Pageload(构建后)缓存为空,categs为null,
第二个页面加载缓存将是,但是因为categs.Count will be 0
而无法从那里获取并重新构建缓存....
CategoryEntry类:
[serializable]
public class CategoryEntry{
public string Title { get; set; }
public string URL { get; set; }
public int CategoryId { get; set; }
public int CompanyPageId { get; set; }
public int ParentCategoryEntryId { get; set; }
public int Indent { get; set; }
}
问题应该是在保存缓存时。它保存为object
,当我们获取缓存时,我们将其转换为List<CategoryEntry>
。
还想出我是否使用List<string>
而不是使用List<CategoryEntry>
执行此操作
然后缓存工作完美!。
List<string>
工作的示例:
List<string> test = (List<string>)EPiServer.CacheManager.Get("sindex");
if (test == null)
{
test = new List<string>();
test.Add("item1");
test.Add("item2");
test.Add("item3");
test.Add("item4");
test.Add("item5");
EPiServer.CacheManager.Add("sindex", test);
}
else
{
Response.Write("It works: elements "+ test.Count);
}
另一个尝试是我已经缓存了一个CategoryEntry
的简单实例,这也有效,问题是我尝试保存为List<CategoryEntry>
任何帮助都会被贬低,谢谢。