Dnn 8:缓存模块设置

Dnn 8: caching module settings

我通过

放置了一些模块设置
var moduleController = new ModuleController();
moduleController.UpdateModuleSetting(moduleId, "key", value);

稍后如果我尝试使用

访问设置
var rcModule = ModuleController.Instance.GetModuleByDefinition(PortalSettings.PortalId, "MyModule");
var value = rcModule.ModuleSettings["value"]?.ToString() ?? string.Empty;

返回相同的值(即使我重新保存设置),直到我清除应用程序缓存。每次在数据库中保存设置后该值都是正确的,但在模块中不正确。我还尝试将 ModuleController.SynchronizeModule(moduleId); 添加到我的保存设置方法中,但没有帮助。模块和页面缓存都被禁用。 怎么了?

您正在创建 moduleController 的新实例,而不是从内存中获取现有实例。

您可以通过编程方式清除缓存。

DotNetNuke.Common.Utilities.DataCache.ClearModuleCache(TabId);
DotNetNuke.Common.Utilities.DataCache.ClearTabsCache(PortalId);
DotNetNuke.Common.Utilities.DataCache.ClearPortalCache(PortalId, false);

或者获取正确的实例并编辑属性。

ModuleInfo moduleInfo = ModuleController.Instance.GetModule(ModuleId, TabId, false);
moduleInfo.ModuleTitle = "New Title";
ModuleController.Instance.UpdateModule(moduleInfo);