#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. Спасибо за эту взломанную ссылку и фрагмент кода. Не уверен, что код работает для того, что мне нужно прямо сейчас, но это хорошая идея.