C# 在运行时更新app.config文件

C# 在运行时更新app.config文件,c#,web-services,app-config,C#,Web Services,App Config,我正在尝试在运行时更新app.config文件。我得到了错误 System.NullReferenceException:对象引用未设置为对象的实例。第59行 我试图做的是在运行时更改url,通过使用一个弹出表单,其中包含一个用于url的文本框,然后使用该文本框更新配置文件 public void changeSettings() { Configuration config = ConfigurationManager.OpenExeConfig

我正在尝试在运行时更新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());
        }




    }
public void changeSettings()
{
配置配置=
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection设置=config.AppSettings.settings;
尝试
{
Console.WriteLine(“nothing”+ConfigurationManager.AppSettings[“client\u postCodeRef\u Service”]);

设置[“客户端\邮政编码参考\服务]。值=textBox1.Text;您正在使用的是
应用程序设置
而不是
应用程序设置

这两个部分是配置文件的不同部分

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());
        }




    }
要在应用程序设置中使用条目,请使用以下语法:

string result = Client.Properties.Settings.Default.client_postCodeRef_Service;
还请注意,您无法从程序内部轻松更改应用程序设置项的值。

详细讨论应用程序设置和应用程序设置的优缺点

愚蠢的问题……您是否有“客户端邮政编码参考”服务键入你的appSettings集合?如果没有,访问它的Value属性将引发该异常。谢谢steve。这是我第一次使用配置文件,你提到的讨论澄清了这一点。