2013-08-28 122 views
1

我已經實現了一個使用用戶定義控件的DNN模塊(該用戶定義的控件已經實現了GoogleAnalytics跟蹤供我們自己使用)。在DotNetNuke模塊中訪問.config文件

控件需要訪問配置文件才能獲取我們的Google Analytics帳戶的配置設置。例如,帳戶代碼(UA-dddddd-dd)等。

我的問題: 由於我在DotNetNuke上安裝模塊,在哪裏放置配置文件的適當位置或者什麼配置文件會它默認訪問?

在試圖訪問的配置文件中的控制工作的一段代碼被提供如下:

string path = Assembly.GetExecutingAssembly().CodeBase; 
FrameworkConfig.instance = new FrameworkConfig(ConfigurationManager.OpenMappedMachineConfiguration(new ConfigurationFileMap(path + ".config"))); 

注:FrameworkConfigSystem.Configuration對象的包裝類。

總之,我需要知道當通過DNN模塊調用時,Assembly.GetExecutingAssembly().CodeBase返回什麼?其他選擇?

回答

4

如果添加鍵DNN的網站的web.config的appSettings部分,您可以使用檢索它們:

DotNetNuke.Common.Utilities.Config.GetSetting("settingname"); 

然而,這是一個更好的做法,並且是有道理在這種情況下創建Settings控制您的模塊並將信息存儲在那裏。

您可以通過創建一個從DotNetNuke.Entities.Modules.ModuleSettingsBase繼承的ascx控件並將設置存儲在基本設置字典中以供您模塊使用。

您的其他模塊視圖控件可以通過類似Dictionary對象Settings來訪問設置,該對象是ModuleUserControlBase類的一部分。

有關如何使用模塊設置的示例,請查看this DNN7 tutorial video and article。包含所有代碼的示例項目位於文章的「相關文件」部分。

0

我發現GetSetting方法返回null。這可能不是最好的做法,但過去這對我很有幫助。

using System.Configuration; 

var slug = ConfigurationManager.AppSettings["EE.MandrillTemplateSlug"]; 

隨着應用程序的設置,如:

<add key="EE.MandrillTemplateSlug" value="newsletter" /> 
+0

其實我有兩個方法返回NULL,直到我清除了DNN緩存出現了問題。它似乎在緩存web.config。 –