首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConfigurationManager不保存设置

ConfigurationManager不保存设置
EN

Stack Overflow用户
提问于 2010-11-18 23:59:09
回答 3查看 38.5K关注 0票数 19

下面是我使用的代码:

代码语言:javascript
复制
private void SaveConfiguration()
{
    if (txtUsername.Text != "" && txtPassword.Text != "")
    {
        ConfigurationManager.AppSettings["Username"] = txtUsername.Text;
        ConfigurationManager.AppSettings["Password"] = txtPassword.Text;

        MessageBox.Show("Su configuracion guardo exitosamente.", "Exito!");
        this.Close();
    }
    else
    {
        MessageBox.Show("Por favor lleno los campos.", "Error.");
    }
}

现在,这些设置是持久化的,但是当我关闭应用程序并按F5再次运行它时,这些值将恢复为输入到app.config文件中的值。有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-19 00:00:56

我认为您应该调用Save方法

代码语言:javascript
复制
ConfigurationManager.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

编辑

为了能够保存,必须使用由OpenExeConfiguration方法返回的configuration对象

代码语言:javascript
复制
//Create the object
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

//make changes
config.AppSettings.Settings["Username"].Value = txtUsername.Text;
config.AppSettings.Settings["Password"].Value = txtPassword.Text;

//save to apply changes
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

更多参考资料请点击此处ConfigurationManager Class

票数 55
EN

Stack Overflow用户

发布于 2010-11-19 00:02:16

当您使用F5运行应用程序时,

  • 您的代码被编译,
  • 可执行文件被复制到源代码目录的binbin\Debug子目录中,
  • 您的app.config作为<代码>D9复制到该目录中,<代码>H210<代码>在该目录中启动可执行文件。<代码>H212<代码>F213

因此,您的应用程序使用binbin\Debug目录中的yourexecutable.exe.configConfigurationManager正是在那里保存更改,而不是保存在您的源代码目录中。在部署应用程序之后,这将不是问题,因为之后,更改将转到部署目录中的yourexecutable.exe.config,这正是您想要的。

票数 34
EN

Stack Overflow用户

发布于 2017-10-20 18:44:06

关于阿佩特里对第二个答案的评论:

还要注意,如果您正在调试(并且没有禁用vshost进程),那么当您的应用程序停止时,yourexecutable.vshost.exe.config将再次替换为yourexecutable.exe.config。

因此,您可能再一次看不到您之后所做的任何更改!(如果您在调试时停在断点处,并在进行修改并调用刷新部分后查看文件,您将看到所做的更改)。

如果您调试的程序查找设置,如果不存在,则写入设置,这是非常令人困惑的。即使你被预先警告不要在第二次运行程序时期望设置在那里,人们可能会期望它在第一次运行程序之后和第二次运行之前就在那里……天哪!

这没什么可担心的,因为当应用程序部署或直接从bin启动时,这一切都可以正常工作,就像其他人已经说过的那样……

但是,如果你正在调试你的程序,并决定第一次使用应用程序设置,并且为了避免手写XML,你决定从代码开始,让程序编写一个设置,那么就有可能落入“陷阱”。获取所有这些内容,然后可能添加更多内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4216809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档