2013-05-30 4 views
2

Может кто-нибудь помочь мне понять, почему после добавления значения в файл конфигурации я не могу сразу его прочитать в приложении? Я делаю обновление, но это не работает. См. Ниже:Не удается прочитать appSettings до перезапуска приложения

public void AddConfig(string key_value, string actual_value) 
    { 
     // Open App.Config of executable 
     System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
     //If it exists, remove it first 
     config.AppSettings.Settings.Remove(key_value); 
     // Add an Application Setting. 
     config.AppSettings.Settings.Add(key_value, actual_value);    
     // Save the configuration file. 
     config.Save(ConfigurationSaveMode.Modified); 
     // Force a reload of a changed section.    
     ConfigurationManager.RefreshSection("appSettings"); 
     string blah = ConfigurationManager.AppSettings[key_value]; 
     MessageBox.Show(blah); 
    } 

Поле сообщения будет отображаться как null/blank.

Если я перезапущу приложение и запустил еще одну команду, чтобы прочитать значение ключа после запуска, он будет работать.

Любые идеи?

ответ

1

То, что вы испытываете, очень вероятно из-за запуска приложения из среды Visual Studio.

Запустите .exe непосредственно из каталога Debug или Release, а метод RefreshSection() будет работать должным образом.

Если вы хотите, чтобы увидеть измененное значение при отладке, вы должны будете использовать AppSettings.Settings вместо ConfigurationManager.AppSettings:

string blah = config.AppSettings.Settings[key_value].Value 
+0

Это было его .... когда я бегу от отладки, она не работает , Когда я запускаю приложение, оно работает. – user2437909

Смежные вопросы