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

questionAnswers(4)

yourAnswerToTheQuestion