app.config 中未添加到 appSettings 的值

Values not adding to appSettings in app.config

我已经逐步检查了我的代码,一切似乎都在工作。我从异步响应中获取两个值,我试图将它写入 app.Config 中的 appSettings 但是......当我强制刷新 app.config 时,有那里根本没有价值。

获取和写入值的代码 app.config

public void Authenticated(Action success, Action<Exception> failure)
{
    Client.GetAccessTokenAsync((accessToken) =>
    {
        UserToken = accessToken.Token;
        UserSecret = accessToken.Secret;

        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = config.AppSettings.Settings;

        if (settings["userLoginSecret"] == null && settings["userLoginToken"] == null)
        {
            settings.Add("userLoginSecret", UserSecret);
            settings.Add("userLoginToken", UserToken);
        }
        config.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);

        if (success != null) success();
    },
    (error) =>
    {
        if (failure != null) failure(error);
    });
}

我的 app.Config 文件是这样的:

<appSettings>
  <add key="userLoginToken" value=""/>
  <add key="userLoginSecret" value=""/>
</appSettings>`

非常感谢任何帮助....

而不是使用 ConfigurationManager,考虑在中添加设置 Project\Properties\Settings.settings

确保您设置的范围是"User"

然后您可以通过代码写入设置:

Properties.Settings.Default.SettingName = "Value";
Properties.Settings.Default.Save();

读取设置:

String value = Properties.Settings.Default.SettingName;

当你运行你的应用程序在Visual Studio调试时实际修改的配置文件是appname.vshost.exe.config,所以一定要检查正确的文件。

编译项目时,要修改的文件是 appname.exe.config 而不是源代码文件夹中的 app.config。

如果您想在调试期间测试正常的 .exe.config 文件,您应该在项目属性的 "Debug" 选项卡中取消选中框 "Enable the Visual Studio hosting process"。

此外,如果在您的 app.config 文件中这两个密钥已经存在,则使用以下代码片段:

 if (settings["userLoginSecret"] == null && settings["userLoginToken"] == null)
    {
        settings.Add("userLoginSecret", UserSecret);
        settings.Add("userLoginToken", UserToken);
    }

仅当满足条件且键不存在时才插入值。如果您还想更新已经插入的值,您应该添加:

else
    {
        settings["userLoginSecret"].Value = UserSecret;
        settings["userLoginToken"].Value = UserToken;
    }