Обновление настройки app.config system.net во время выполнения - PullRequest
23 голосов
/ 11 июня 2009

Мне нужно обновить настройку в разделе System.net Group.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");

Ответы [ 3 ]

45 голосов
/ 11 июня 2009

Я не понял из вашего вопроса, если у вас нет доступа к файлу app.config из-за вашей собственной реализации проекта или вы просто не смогли сохранить файл конфигурации, так что вот фрагмент кода, который позволяет изменить и сохранить раздел 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);

P.S. код не сохранит файл app.config, который вы видите в редакторе решений, он обновит файл "program_name.exe.config" в операции forlder.

4 голосов
/ 03 ноября 2012

с использованием 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);


    }
2 голосов
/ 14 февраля 2012

с помощью этого кода я изменил строку подключения в настройках приложения в файле конфигурации ... надеюсь, это может помочь вам.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...