我相信Sitecore正在缓存项目的工作流程值,我需要能够清除它。
方案是我发出ajax请求以确定特定项是否存在以及它是否存在检索其工作流字段值。用户填写表格,他们可以选择保存或提交该表格;当他们提交表单时,它进入工作流状态。但是,即使我切换浏览器,LoiHasNoWorkflow
也保留以前的值,除非我再次发布。我有一个方法来清除一些缓存,但我不确定哪个可能实际缓存该字段。
public static bool ClearCache()
{
foreach (DictionaryEntry entry in HttpContext.Current.Cache)
{
HttpContext.Current.Cache.Remove((string)entry.Key);
}
Context.Database.Engines.TemplateEngine.Reset();
Context.ClientData.RemoveAll();
CacheManager.ClearAllCaches();
return true;
}
public bool LoiHasNoWorkflow => CBUtility.ClearCache() && string.IsNullOrEmpty(loi?.Fields["__Workflow"].Value);
如何确定项目的__Workflow值无法清除的原因?我甚至可以通过Sitecore UI删除该项目,刷新页面并发出相同的请求,但在项目存在时获取值。
答案 0 :(得分:0)
实际上问题与缓存无关,而是我自己的错误。我的loi对象是该类中的静态变量,因此在每次刷新页面时都没有清除。这是SO更深层次的解释,使我实现了这一点。实际上学到了更多关于静态变量的知识。