Sitecoreがアイテムのワークフロー値をキャッシュしていると思うので、それをクリアする必要があります。キャッシュから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でアイテムを削除したり、ページを更新したり、同じリクエストを発行することもできますが、アイテムが存在するときに値を取得することもできます。
ajaxリクエストとフォーム送信がmasterデータベースにアクセスしていますか? LoiHasNoWorkflowを読むと、Webデータベースにアクセスしていますか? –