Доступ к файлу.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" />
Другие вопросы по тегам