访问DotNetNuke模块中的.config文件

时间:2013-08-28 18:50:44

标签: c# asp.net dotnetnuke-module config-files dotnetnuke-7

我已经实现了一个使用用户定义控件的DNN模块(这个用户定义的控件已经实现了GoogleAnalytics跟踪供我们自己使用)。

控件需要访问配置文件才能获取我们的Google Analytics分析帐户的配置设置。例如,帐户代码(UA-dddddd-dd)等

我的问题: 由于我在DotNetNuke上安装模块,将配置文件放在OR的正确位置,默认情况下它将访问哪个配置文件?

控件中尝试访问配置文件的代码段如下:

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

注意:FrameworkConfigSystem.Configuration对象的包装类。

简而言之,我需要知道Assembly.GetExecutingAssembly().CodeBase在通过DNN模块调用时会返回什么?其他选择?

2 个答案:

答案 0 :(得分: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。包含所有代码的示例项目位于本文的“相关文件”部分。

答案 1 :(得分:0)

我发现GetSetting方法返回null。这可能不是最好的做法,但这对我来说过去很有用。

using System.Configuration;

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

使用以下应用设置:

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