Cómo actualizar (agregar / modificar / eliminar) las claves en la sección AppSettings de web.config en tiempo de ejecución

Me gusta actualizar las claves / valores definidos enAppSettings Sección deWeb.config en tiempo de ejecución. Sin embargo, no quiero realmente guardarlos enWeb.config expediente.

Tengo una gran aplicación web que consta de muchos módulos, DLL y archivos de código fuente. Un montón de información crítica que va desde la configuración de la base de datos, las claves de cifrado, el nombre de usuario y las contraseñas de los servicios web se guardan enAppSettings sección de laweb.config expediente. Los requisitos recientes del proyecto me requieren para mover estos valores fuera deweb.config y mantener en un almacenamiento seguro.

Ya aseguré estos valores en una ubicación externa y puedo leerlos cuando se inicia la aplicación.

Aquí está el código de ejemplo.

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

Como se habrá dado cuenta, no es posible cambiar las referencias aAppSettings en un código masivo creado por varios equipos de programación para leer su configuración de misecureConfig dictionary y por otro lado no debería guardar estos valores enweb.config archivo que está disponible para administradores y operadores web, administradores de sistemas y administradores de la nube.

Para hacer que la vida de los programadores sea más fácil, quiero permitirles agregar sus valores aAppSettings Sección deweb.config durante el desarrollo, pero se eliminarán de allí y se guardarán en un almacenamiento seguro más adelante durante la implementación, sin embargo, estos valores deben estar disponibles para su programación de manera transparente, ya que aún están enAppSettings sección.

Pregunta: como puedo agregar valores aAppSettings en tiempo de ejecución para que el programa pueda leerlos usandoConfigurationManager.AppSettings["ACriticalKey"] Llegar"VeryCriticalValue" ¿Sin guardarlos en Web.Config?

tenga en cuenta: ConfigurationManager.AppSettings.Add(item.Key, item.Value); me daConfigurationErrorsException con mensajeThe configuration is read only.

tenga en cuenta: Preferiblemente, algunos ajustes deberían poder permanecer enAppSettings como antes

Respuestas a la pregunta(4)

Su respuesta a la pregunta