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