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