Обновите настройку system.net системы app.config во время выполнения

Мне нужно обновить параметр в System.net SectionGroup файла .Net exe app.config во время выполнения. У меня нет права на запись в исходный файл конфигурации во время выполнения (я разрабатываю надстройку .Net dll, которая размещается в exe, предоставляемой приложением, в котором я не контролирую), поэтому я надеялся сохранить копию файла и замените конфигурацию в exe модифицированной версией во время выполнения. Я пробовал следующее, но он не работает. Какие-либо предложения?

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

    Я не понял из вашего вопроса, если у вас нет доступа к файлу app.config из-за вашей собственной реализации проекта или вы просто не смогли сохранить файл конфигурации, так что вот fragment кода, который позволяет вам изменить и сохранить раздел appSettings в файле конфигурации во время выполнения:

     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 код не сохранит файл app.config, который вы видите в редакторе решений, он будет pdate файл «program_name.exe.config» в операции forlder.

    используя 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); } 

    с этим кодом я изменил строку подключения в настройках приложения файла конфигурации … надеюсь, что это может помочь 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); 
    Давайте будем гением компьютера.