Доступ к файлу.config внутри модуля DotNetNuke
Я реализовал модуль DNN, который использует пользовательский элемент управления (этот пользовательский элемент управления реализовал отслеживание GoogleAnalytics для нашего собственного использования).
Элемент управления должен получить доступ к файлу конфигурации, чтобы получить настройки конфигурации нашего аккаунта Google Analytics. Например, код учетной записи (UA-dddddd-dd) и т. Д.
Мой вопрос: поскольку я устанавливаю модуль на DotNetNuke, где находится правильное место для размещения файла конфигурации в ИЛИ, к какому файлу конфигурации он будет обращаться по умолчанию?
Кусок кода в элементе управления, который пытается получить доступ к файлу конфигурации, представлен ниже:
string path = Assembly.GetExecutingAssembly().CodeBase;
FrameworkConfig.instance = new FrameworkConfig(ConfigurationManager.OpenMappedMachineConfiguration(new ConfigurationFileMap(path + ".config")));
нота: FrameworkConfig
это класс-обёртка для System.Configuration
объект.
Короче говоря, мне нужно знать, что делает Assembly.GetExecutingAssembly().CodeBase
вернуть при вызове через DNN модуль? другие альтернативы?
2 ответа
Если вы добавите ключи в раздел appsettings на сайте DNN web.config, вы можете получить их, используя:
DotNetNuke.Common.Utilities.Config.GetSetting("settingname");
Тем не менее, это лучшая практика, и в этом случае имеет смысл создать Settings
контролировать в вашем модуле и хранить информацию там.
Вы делаете это путем создания элемента управления ascx, который наследуется от DotNetNuke.Entities.Modules.ModuleSettingsBase
и сохраняет настройки в базовом словаре настроек для вашего модуля.
Ваши другие элементы управления представлением модуля могут получить доступ к настройкам через аналогичный Dictionary
объект называется Settings
это является частью ModuleUserControlBase
учебный класс.
Для примера того, как использовать настройки модуля, посмотрите это учебное видео DNN7 и статью. Пример проекта со всем кодом находится в разделе "Связанные файлы" статьи.
Я обнаружил, что метод GetSetting вернул NULL. Вероятно, это не лучшая практика, но в прошлом это отлично сработало.
using System.Configuration;
var slug = ConfigurationManager.AppSettings["EE.MandrillTemplateSlug"];
С настройками приложения, такими как:
<add key="EE.MandrillTemplateSlug" value="newsletter" />