2012-06-07 51 views
0

我試圖在運行時更新app.config文件。我得到錯誤在運行時更新app.config文件

System.NullReferenceException:對象引用未設置爲對象的實例。行59.

我想要做的是改變網址在運行時,通過彈出窗體,其中有一個用於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

愚蠢的問題......你有你的appSettings集合「client_postCodeRef_Service」鍵?否則,訪問其Value屬性將拋出該異常。 –

回答

1

您使用applicationSettingsappSettings
這兩個是你配置文件的不同部分。

要使用在applicationSettings條目使用此語法:

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

也注意到,你不能輕易地從你的程序中改變applicationSetting項的值。
詳細討論的applicationSettings的利弊,並AppSettings的can be found here

+0

謝謝史蒂夫。這是我第一次使用配置文件,你提到的討論清除了這一點。 –