Dnn 8:缓存模块设置

时间:2016-11-21 15:24:23

标签: caching dotnetnuke

我通过

进行了一些模块设置
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);添加到我的保存设置方法中,但它没有帮助。模块和页面缓存均已禁用。 怎么了?

1 个答案:

答案 0 :(得分:2)

您正在创建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);