Как обновить (добавить / изменить / удалить) ключи в разделе AppSettings файла web.config во время выполнения
Мне нравится обновлять ключи / значения, определенные вAppSettings
разделWeb.config
во время выполнения. Однако я не хочу на самом деле сохранить ихWeb.config
файл.
У меня есть огромное веб-приложение, которое состоит из множества модулей, библиотек DLL и файлов исходного кода. Куча важной информации, начиная от конфигурации базы данных, ключей шифрования, имени пользователя и паролей для веб-сервисов, сохраняется вAppSettings
разделweb.config
файл. Недавнее требование проекта требует, чтобы я переместил эти ценности изweb.config
и хранить в надежном хранилище.
Я уже сохранил эти значения во внешнем местоположении, и я могу прочитать их обратно при запуске приложения.
Вот пример кода.
Global.asax
public class Global: System.Web.HttpApplication {
protected void Application_Start(object sender, EventArgs e) {
Dictionary<string, string> secureConfig = new Dictionary<string,string>{};
// --------------------------------------------------------------------
// Here I read and decrypt keys and add them to secureConfig dictionary
// To test assume the following line is a key stored in secure sotrage.
//secureConfig = SecureConfig.LoadConfig();
secureConfig.Add("ACriticalKey","VeryCriticalValue");
// --------------------------------------------------------------------
foreach (KeyValuePair<string, string> item in secureConfig) {
ConfigurationManager.AppSettings.Add(item.Key, item.Value);
}
}
}
Как вы могли заметить, изменить ссылки наAppSettings
в массивном коде, созданном несколькими командами программистов, чтобы прочитать их настройки из моегоsecureConfig dictionary
и с другой стороны, я не должен сохранять эти значения вweb.config
файл, который доступен для веб-администраторов и операторов, системных администраторов и облачных администраторов.
Чтобы облегчить жизнь программистам, я хочу позволить им добавить свои ценности вAppSettings
разделweb.config
во время разработки, но они будут удалены оттуда и позже помещены в безопасное хранилище во время развертывания, однако эти значения должны быть доступны для прозрачного программирования, поскольку они все еще находятся вAppSettings
раздел.
Вопрос: как я могу добавить значения вAppSettings
во время выполнения, чтобы программа могла читать их, используяConfigurationManager.AppSettings["ACriticalKey"]
получить"VeryCriticalValue"
не сохраняя их в Web.Config?
пожалуйста, обратите внимание: ConfigurationManager.AppSettings.Add(item.Key, item.Value);
дает мнеConfigurationErrorsException
с сообщениемThe configuration is read only.
пожалуйста, обратите внимание: Желательно, чтобы некоторые настройки могли оставаться вAppSettings
как прежде