0

下面是我用来更新或更改 app.config 中 appsetting 值的代码

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);              
 config.AppSettings.Settings["userName"].Value = username;
 config.AppSettings.Settings["pwd"].Value = pwd;
 config.Save(ConfigurationSaveMode.Modified, true);                
 ConfigurationManager.RefreshSection("appSettings");

我正在使用上面的代码在运行时更改或更新 appsetting 部分中的设置,并希望更改保持不变,以便在我运行应用程序时它应该从 appsettings 中选择新值,但在这里它不会发生,因此所做的更改并保存在运行时,当我再次重新启动我的应用程序时,它不会持续存在,它具有旧的默认设置。我还检查了 bin/debug 中的 app.config,但它在 appsettings 中也有旧值。我参考了各种博客并在此处发布作为参考,但它得到了与上面相同的代码,但它没有保留设置。已经提到了这篇文章

4

3 回答 3

0

请参见下文(来自 MSDN)并记住 app.config 在您的项目中。.exe.config 是实际的文件名。客户端应用程序使用适用于所有用户的全局配置、适用于单个用户的单独配置以及适用于漫游用户的配置。userLevel 参数通过指示配置文件是否没有用户级别(配置文件与应用程序位于同一目录中)或具有每个用户级别(配置文件位于应用程序设置路径中)来确定正在打开的配置文件的位置由用户级别决定)。

通过为 userLevel 传递以下值之一来指定要获取的配置:

To get the Configuration object that applies to all users, set userLevel to None.

To get the local Configuration object that applies to the current user, set userLevel to PerUserRoamingAndLocal.

To get the roaming Configuration object that applies to the current user, set userLevel to PerUserRoaming.
NoteNote

To get the Configuration object for a resource, your code must have read permissions on all the configuration files from which it inherits settings. To update a configuration file, your code must additionally have write permissions for both the configuration file and the directory in which it exists.
于 2013-04-19T04:08:38.363 回答
0

我得到了上述问题的解决方案,我的目标是在应用程序或用户级别保持运行时所做的更改。最初我尝试使用 App.config,我在 app.config 的 appsettings 部分保留了应用程序的默认设置,但后来经过研究,我参考了我知道 appsetting 不会保留更改,而是可以在 YourApplication 下使用 userSettings 部分.Property.Settings 您可以提供您的用户级别设置,它对我有用。为此,您无需转到 App.config 手动执行此操作,而是可以从项目的属性窗口中执行此操作。

右键单击您的项目-> 选择左侧的设置选项卡-> 现在在右侧,您将看到资源部分,提供资源名称、类型、范围及其值,您就完成了。相同的值也可以从代码中动态访问和更改。以下是相同的代码摘录-

访问设置值

enter code here
        userName = Properties.Settings.Default.UserName;
        pwd = Properties.Settings.Default.PWD;

保存新设置

enter code here
        Properties.Settings.Default.UserName = userName.ToString();
        Properties.Settings.Default.PWD = newPWD..ToString();
        Properties.Settings.Default.Save();

当您下次启动应用程序时,您将获得新的更改设置作为默认设置。希望对大家有帮助 谢谢各位

主播

于 2013-04-19T06:21:51.633 回答
0

我前段时间也有同样的问题。我宁愿把它放在评论中,但我没有这个特权。我的回答可能不是你的情况,但我认为值得分享。

请问你的bin文件夹在哪里?当您以编程方式更改不在用户可访问空间中的文件时,Windows 7 会在漫游空间中创建该文件的副本,并且该文件将保留在那里。每次您尝试访问该文件(如您的 app.config)时,W7 都会将您的读取/写入透明地重定向到该文件,因此您有可能在漫游空间中修改该文件,而您正在查看的文件保持不变。

在您连续启动应用程序时,您所做的更改是否仍然存在?

免责声明/道歉:我不是经验丰富的用户,所以如果我说愚蠢的话,请告诉我,我将删除此评论。

于 2013-04-18T12:04:37.127 回答