2016-11-21 75 views
0

我通過DNN 8:緩存模塊設置

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

您正在創建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); 
+0

謝謝!它幫助! – Slip