Cambie un web.config programmatically con C # (.NET)

¿Cómo puedo modificar / manipular web.config progtwigción con C #? ¿Puedo usar un objeto de configuración y, en caso afirmativo, cómo puedo cargar el web.config en un objeto de configuración? Me gustaría tener un ejemplo completo cambiando la cadena de conexión. Después de la modificación, web.config debe volver a escribir en el disco duro.

Aquí hay un código:

 var configuration = WebConfigurationManager.OpenWebConfiguration("~"); var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings"); section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=..."; configuration.Save(); 

Para ver más ejemplos en este artículo , es posible que debas echarle un vistazo a la suplantación .

 Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection; //section.SectionInformation.UnprotectSection(); section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider"); config.Save(); 

Como el archivo web.config es un archivo xml, puede abrir web.config utilizando la clase xmldocument. Obtenga el nodo de ese archivo xml que desea actualizar y luego guarde el archivo xml.

aquí está la URL que explica con más detalle cómo puede actualizar el archivo web.config mediante progtwigción.

http://patelshailesh.com/index.php/update-web-config-programmatically

Nota: si realiza algún cambio en web.config, ASP.NET detecta esos cambios y volverá a cargar su aplicación (reciclar grupo de aplicaciones) y se perderán los datos almacenados en la sesión, la aplicación y la memoria caché (suponiendo que el estado de la sesión es InProc y no utiliza un servidor de estado o base de datos).

Este es un método que uso para actualizar AppSettings, funciona tanto para aplicaciones web como de escritorio. Si necesita editar connectionStrings, puede obtener ese valor de System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"]; y luego establezca un nuevo valor con config.ConnectionString = "your connection string"; . Tenga en cuenta que si tiene algún comentario en la sección connectionStrings en Web.Config estos serán eliminados.

 private void UpdateAppSettings(string key, string value) { System.Configuration.Configuration configFile = null; if (System.Web.HttpContext.Current != null) { configFile = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); } else { configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); } var settings = configFile.AppSettings.Settings; if (settings[key] == null) { settings.Add(key, value); } else { settings[key].Value = value; } configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); }