example - configurationmanager.connectionstrings c#
Actualizar la configuraciĆ³n de system.config system.net en tiempo de ejecuciĆ³n (3)
Necesito actualizar una configuración en el grupo de sección system.net de un archivo .Net exe app.config en tiempo de ejecución. No tengo acceso de escritura al archivo de configuración original en tiempo de ejecución (estoy desarrollando un complemento .NET dll que está alojado en un archivo ejecutable proporcionado por la aplicación sobre la que no tengo control), así que esperaba guardar una copia. del archivo y reemplace la configuración en el exe con la versión modificada en tiempo de ejecución. He intentado lo siguiente pero no funciona. ¿Alguna sugerencia?
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
NetSectionGroup netSectionGroup = config.GetSectionGroup("system.net") as NetSectionGroup;
netSectionGroup.Settings.HttpWebRequest.UseUnsafeHeaderParsing = true;
config.SaveAs(@"C:/ProgramData/test.config", ConfigurationSaveMode.Full);
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:/ProgramData/test.config");
No entendí por tu pregunta si no tienes acceso al archivo app.config debido a tu propia implementación de diseño o simplemente no pudiste guardar el archivo de configuración, así que aquí hay un fragmento de código que te permite modifique y guarde la sección de ajustes de aplicaciones en el archivo de configuración en tiempo de ejecución:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = config.AppSettings.Settings;
// update SaveBeforeExit
settings[-keyname-].Value = "newkeyvalue";
...
//save the file
config.Save(ConfigurationSaveMode.Modified);
//relaod the section you modified
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
PD: el código no guardará el archivo app.config que ve en el editor de soluciones, sino que actualizará el archivo "program_name.exe.config" en la operación forlder.
con este código, he cambiado la cadena de conexión en la configuración de la aplicación del archivo de configuración ... espero que esto pueda ayudar a u.
string ConStrng = ConfigurationSettings.AppSettings["ConnectionString"];
string sss = "Data Source=";
string xxx = ";Initial Catalog=AlfalahScholarship;Integrated Security=True";
//ConfigurationSettings.AppSetting;
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//Get the appSettings section.
AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
appSettings.Settings.Remove("ConnectionString");
appSettings.Settings.Add("ConnectionString", sss + txtServerName.Text + xxx);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
utilizando System.Configuration;
public void save_new_connection()
{
string ConStrng = ConfigurationManager.ConnectionStrings.ToString();
ConnectionStringSettings conSetting = new ConnectionStringSettings();
conSetting.ConnectionString="server=localho;UserId=root;password=mypass;database=night_anglecourier";
conSetting.Name = "courier.Properties.Settings.night_anglecourierConnectionString";
conSetting.ProviderName = "MySql.Data.MySqlClient";
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConnectionStringsSection conSettings = (ConnectionStringsSection)config.GetSection("connectionStrings");
conSettings.ConnectionStrings.Remove(conSetting);
conSettings.ConnectionStrings.Add(conSetting);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
}