Как я могу ссылаться на набор приложений в другой части web.config

#asp.net #web-config

#asp.net #web-config

Вопрос:

У меня есть мой appSettings определенный в отдельном вызываемом файле конфигурации Appsettings.Dev.Config , и я включаю этот файл в свой web.config файл следующим образом

 <appSettings configSource="ConfigFilesAppSettings.Dev.config"/>
  

Допустим, один из параметров в файле

 <add key="MailerEmailAccount" value="myemail@myserver.com" />
  

Могу ли я получить доступ к значению параметра MailerEmailAccount в другом месте внутри web.config? Как?

Ответ №1:

Нет, файл веб-конфигурации не может извлекать «настройки» из себя; он вообще не динамичен. Единственная динамическая функциональность — это возможность включать other .config , но это просто «впитывает все эти настройки, как если бы они были частью меня».

Комментарии:

1. Я делаю это (извлекаю настройки из другого файла) для AppSettings и ConnectionStrings, используя атрибут configSource . Похоже, это не работает для тега mailSettings внутри system.net тег (или для system.net сам тег). Есть ли способ получить настройки, помимо AppSettings и ConnectionStrings, из других файлов?

2. Я не уверен, есть ли ограничения на это; как и вы, я использую его в основном для AppSettings и ConnectionStrings. Если вы используете VS2010, вы также можете рассмотреть преобразования Web.Config: weblogs.asp.net/srkirkland/archive/2009/10/13 /…

3. Оказывается, что system.net и теги mailSettings не могут быть получены из другого файла. Однако тег smtp (который является дочерним элементом mailSettings) может быть. Я использую преобразования web.config, но эта конкретная проблема не может быть решена только этим. Спасибо.

Ответ №2:

Это может быть возможно, если вы создадите пользовательский ConfigurationSection параметр, из которого извлекается значение appSettings .

Вот статья, в которой объясняется, как создать раздел пользовательской конфигурации:
http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

Я не знаю, это ли то, что вы ищете, но это единственный способ, который я могу придумать, чтобы прочитать web.config настройку изнутри web.config .

Редактировать

Я не тестировал это, но, может быть, что-то подобное сработает?:

 [ConfigurationProperty("localName", IsRequired = true, IsKey = true)]
public string LocalName
{
    get
    {
        return this["localName"] as string;
    }
    set
    {                
        this["localName"] = WebConfigurationManager.AppSettings.Get(value);
    }
}
  

Комментарии:

1. Спасибо за эту взломанную ссылку и фрагмент кода. Не уверен, что код работает для того, что мне нужно прямо сейчас, но это хорошая идея.