Aktualisieren (Hinzufügen / Ändern / Löschen) von Schlüsseln im Abschnitt AppSettings von web.config zur Laufzeit

Ich möchte die in definierten Schlüssel / Werte aktualisierenAppSettings Abschnitt vonWeb.config zur Laufzeit. Ich möchte sie jedoch NICHT speichernWeb.config Datei.

Ich habe eine riesige Webanwendung, die aus vielen Modulen, DLLs und Quellcode-Dateien besteht. Eine Reihe wichtiger Informationen, darunter Datenbankkonfiguration, Verschlüsselungsschlüssel, Benutzername und Kennwörter für Webservices, werden in gespeichertAppSettings Abschnitt derweb.config Datei. Aufgrund der aktuellen Projektanforderungen muss ich diese Werte entfernenweb.config und an einem sicheren Ort aufbewahren.

Ich habe diese Werte bereits an einem externen Speicherort gesichert und kann sie beim Start der Anwendung zurücklesen.

Hier ist der Beispielcode.

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);
        }
    }
}

Wie Sie vielleicht bemerkt haben, ist es nicht möglich, Verweise auf zu ändernAppSettings in einem massiven Code, der von mehreren Programmierteams erstellt wurde, um deren Einstellungen von meinem zu lesensecureConfig dictionary und andererseits sollte ich diese Werte nicht in speichernweb.config Datei, die Webadministratoren und Betreibern, Systemadministratoren und Cloudadministratoren zur Verfügung steht.

Um Programmierern das Leben zu erleichtern, möchte ich, dass sie ihre Werte hinzufügenAppSettings Abschnitt vonweb.config Während der Entwicklung werden sie jedoch von dort entfernt und später während der Bereitstellung in einen sicheren Speicher gestellt. Diese Werte sollten jedoch verfügbar sein, damit sie transparent programmiert werden können, solange sie noch vorhanden sindAppSettings Sektion.

Frage: Wie kann ich Werte hinzufügenAppSettings zur Laufzeit, damit das Programm sie mit lesen kannConfigurationManager.AppSettings["ACriticalKey"] bekommen"VeryCriticalValue" ohne sie in Web.Config zu speichern?

bitte beachten Sie: ConfigurationManager.AppSettings.Add(item.Key, item.Value); gibt mirConfigurationErrorsException mit nachrichtThe configuration is read only.

bitte beachten Sie: Vorzugsweise sollten einige Einstellungen beibehalten werden könnenAppSettings wie vorher

Antworten auf die Frage(4)

Ihre Antwort auf die Frage