【问题标题】:Accessing .config file inside a DotNetNuke Module访问 DotNetNuke 模块中的 .config 文件
【发布时间】:2013-08-28 18:50:43
【问题描述】:

我已经实现了一个 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 模块调用时返回什么?其他选择?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    您可以通过创建一个继承自 DotNetNuke.Entities.Modules.ModuleSettingsBase 的 ascx 控件并将设置存储在您的模块的基本设置字典中来实现此目的。

    您的其他模块视图控件可以通过名为Settings 的类似Dictionary 对象访问设置,该对象是ModuleUserControlBase 类的一部分。

    有关如何使用模块设置的示例,请查看this DNN7 tutorial video and article。包含所有代码的示例项目位于本文的“相关文件”部分。

    【讨论】:

      【解决方案2】:

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

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

      应用设置如:

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

      【讨论】:

      • 实际上,在我清除 DNN 缓存之前,两种方法都返回 NULL 有问题。它似乎正在缓存 web.config。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多