Aggiorna l’impostazione di app.config system.net in fase di esecuzione

Ho bisogno di aggiornare un’impostazione nel Section.net di system.net di un file .Net exe app.config in fase di esecuzione. Non ho accesso in scrittura al file di configurazione originale in fase di esecuzione (sto sviluppando un componente aggiuntivo .Net che è ospitato in un exe fornito dall’app di cui non ho alcun controllo) quindi speravo di salvarne una copia del file e sostituire la configurazione in exe con la versione modificata in fase di esecuzione. Ho provato quanto segue ma non funziona. Eventuali suggerimenti?

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

Non ho capito dalla tua domanda se non hai accesso al file app.config a causa della tua stessa implementazione o non sei riuscito a salvare il file di configurazione, quindi ecco un pezzo di codice che ti permette di modificare e salvare la sezione appSettings nel file di configurazione in fase di runtime:

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

PS il codice non salverà il file app.config che vedi nell’editor della soluzione, esso pderà il file “program_name.exe.config” nell’operazione forlder.

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

con questo codice ho cambiato la stringa di connessione nelle impostazioni dell’applicazione del file di configurazione … spero che questo possa aiutarti.

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