Как обновить (добавить / изменить / удалить) ключи в разделе 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 как прежде

Ответы на вопрос(4)

Ваш ответ на вопрос