Jak zaktualizować klucze (Dodaj / Modyfikuj / Usuń) w sekcji AppSettings w web.config w czasie wykonywania
Lubię aktualizować zdefiniowane klucze / wartościAppSettings
SekcjaWeb.config
W czasie wykonywania. jednak NIE chcę ich zapisywaćWeb.config
plik.
Mam ogromną aplikację internetową, która składa się z wielu modułów, bibliotek DLL i plików kodu źródłowego. Wiele krytycznych informacji, począwszy od konfiguracji bazy danych, kluczy szyfrowania, nazwy użytkownika i haseł do usług sieciowych, jest zapisywanychAppSettings
sekcjaweb.config
plik. Ostatnie wymagania projektu wymagają ode mnie przeniesienia tych wartościweb.config
i trzymaj w bezpiecznym miejscu.
Te wartości zostały już zabezpieczone w lokalizacji zewnętrznej i mogę je odczytać po uruchomieniu aplikacji.
Oto przykładowy kod.
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);
}
}
}
Jak zauważyłeś, zmiana odniesień do nie jest możliwaAppSettings
w ogromnym kodzie stworzonym przez wiele zespołów programistycznych do czytania ich ustawień z mojegosecureConfig dictionary
z drugiej strony nie powinienem zapisywać tych wartości wweb.config
plik, który jest dostępny dla administratorów i operatorów sieci, administratorów systemu i administratorów chmur.
Aby ułatwić życie programistom, chcę pozwolić im na dodanie ich wartościAppSettings
Sekcjaweb.config
podczas rozwoju, ale zostaną one usunięte stamtąd i umieszczone w bezpiecznym miejscu później podczas wdrażania, jednak te wartości powinny być dostępne do programowania w sposób przejrzysty, ponieważ nadal są wAppSettings
Sekcja.
Pytanie: jak mogę dodać wartości doAppSettings
w czasie wykonywania program może je odczytać za pomocąConfigurationManager.AppSettings["ACriticalKey"]
zdobyć"VeryCriticalValue"
bez zapisywania ich w Web.Config?
Proszę zanotować: ConfigurationManager.AppSettings.Add(item.Key, item.Value);
daje miConfigurationErrorsException
z wiadomościąThe configuration is read only.
Proszę zanotować: Najlepiej, aby niektóre ustawienia mogły pozostaćAppSettings
jak wcześniej