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);
我通过
放置了一些模块设置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);