2013-08-28 66 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。 –