Cambiar un web.config mediante programación con C# (.NET)

Resuelto Kottan asked hace 14 años • 4 respuestas

¿Cómo puedo modificar/manipular web.configprogramáticamente con C#? ¿Puedo usar un objeto de configuración y, en caso afirmativo, cómo puedo cargarlo web.configen un objeto de configuración? Me gustaría tener un ejemplo completo de cómo cambiar la cadena de conexión. Después de la modificación, se web.configdebe volver a escribir en el disco duro.

Kottan avatar Feb 14 '10 13:02 Kottan
Aceptado

Aquí hay un código:

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

Vea más ejemplos en este artículo , es posible que necesite echar un vistazo a la suplantación .

Alex LE avatar Feb 14 '2010 06:02 Alex LE
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
ASergan avatar Feb 14 '2010 19:02 ASergan

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

Aquí hay una URL que explica con más detalle cómo se puede actualizar el archivo web.config mediante programació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 recargará su aplicación (reciclaje del grupo de aplicaciones) y el efecto es que los datos guardados en la sesión, la aplicación y el caché se perderán (asumiendo el estado de la sesión). es InProc y no utiliza un servidor de estado ni una base de datos).

shailesh avatar Feb 17 '2010 20:02 shailesh

Este es un método que utilizo para actualizar AppSettings y funciona tanto para aplicaciones web como de escritorio. Si necesita editar cadenas de conexión, puede obtener ese valor System.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];y luego establecer un nuevo valor con config.ConnectionString = "your connection string";. Tenga en cuenta que si tiene algún comentario en la connectionStringssección, Web.Configestos 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);
}
Ogglas avatar Jul 14 '2018 17:07 Ogglas