2012-06-07 2 views
0

Я пытаюсь обновить файл app.config во время выполнения. Я получаю сообщение об ошибкеобновить файл app.config во время выполнения

System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта. линия 59.

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

public void changeSettings() 
    { 
     Configuration config = 
      ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
      KeyValueConfigurationCollection settings = config.AppSettings.Settings; 

     try 
     { 
      Console.WriteLine("nothing " + ConfigurationManager.AppSettings["client_postCodeRef_Service"]); 
      settings["client_postCodeRef_Service"].Value = textBox1.Text; <- line 59 
      config.Save(ConfigurationSaveMode.Modified); 
      ConfigurationManager.RefreshSection("applicationSettings"); 
      Console.WriteLine("nothing 2 " + ConfigurationManager.AppSettings["client_postCodeRef_Service"]); 
     } 
     catch (ConfigurationErrorsException e) 
     { 
      MessageBox.Show("[Exception error: {0}]", 
       e.ToString()); 
     } 




    } 

здесь есть конфигурационный файл

<applicationSettings > 
    <Client.Properties.Settings> 
     <setting name="client_postCodeRef_Service" serializeAs="String"> 
     <value>http://127.0.0.1/directory/directory/webService.asmx</value> 
     </setting> 
     </Client.Properties.Settings> 
    </applicationSettings> 
+0

Тупой вопрос ... Есть ли у Вас ключ «client_postCodeRef_Service» в вашей коллекции AppSettings? Если нет, доступ к свойству Value приведет к тому, что это исключение. –

ответ

1

Вы используете applicationSettings не appSettings.
Два разных раздела вашего конфигурационного файла.

Чтобы использовать запись в applicationSettings используется следующий синтаксис:

string result = Client.Properties.Settings.Default.client_postCodeRef_Service; 

также отметить, что вы не можете легко изменить значение записи applicationSetting внутри вашей программы.
Подробное обсуждение плюсов и минусов applicationSettings и AppSettings can be found here

+0

спасибо Стив. Это первый раз, когда я использовал конфигурационный файл, обсуждение, на которое вы ссылались, очистило это. –

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