我已经实现了一个使用用户定义控件的DNN模块(这个用户定义的控件已经实现了GoogleAnalytics跟踪供我们自己使用)。
控件需要访问配置文件才能获取我们的Google Analytics分析帐户的配置设置。例如,帐户代码(UA-dddddd-dd)等
我的问题: 由于我在DotNetNuke上安装模块,将配置文件放在OR的正确位置,默认情况下它将访问哪个配置文件?
控件中尝试访问配置文件的代码段如下:
string path = Assembly.GetExecutingAssembly().CodeBase;
FrameworkConfig.instance = new FrameworkConfig(ConfigurationManager.OpenMappedMachineConfiguration(new ConfigurationFileMap(path + ".config")));
注意:FrameworkConfig
是System.Configuration
对象的包装类。
简而言之,我需要知道Assembly.GetExecutingAssembly().CodeBase
在通过DNN模块调用时会返回什么?其他选择?
答案 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" />