1

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

控件需要访问配置文件才能获取我们的谷歌分析帐户的配置设置。比如账号代码(UA-dddddd-dd)等。

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

下面提供了控件中尝试访问配置文件的代码:

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

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

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

4

2 回答 2

4

如果您将密钥添加到 DNN 站点的 web.config 的 appsettings 部分,您可以使用以下方法检索它们:

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

Settings但是,这是一种更好的做法,在这种情况下,在您的模块中创建一个控件并将信息存储在那里是有意义的。

为此,您可以创建一个 ascx 控件,该控件继承自DotNetNuke.Entities.Modules.ModuleSettingsBase模块的基本设置字典并将设置存储在其中。

您的其他模块视图控件可以通过属于该类的类似Dictionary对象访问设置。SettingsModuleUserControlBase

有关如何使用模块设置的示例,请查看此 DNN7 教程视频和文章。包含所有代码的示例项目位于本文的“相关文件”部分。

于 2013-09-04T15:50:46.487 回答
0

我发现 GetSetting 方法返回 null。这可能不是最佳实践,但这在过去对我来说非常有用。

using System.Configuration;

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

使用应用程序设置,例如:

<add key="EE.MandrillTemplateSlug" value="newsletter" />
于 2015-02-18T10:19:10.777 回答