【问题标题】:Values not adding to appSettings in app.config值未添加到 app.config 中的 appSettings
【发布时间】:2015-05-27 22:25:46
【问题描述】:

我已经检查了我的代码,一切似乎都在工作。我从异步响应中获取两个值,并尝试将其写入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>`

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

【问题讨论】:

标签: c# winforms app-config


【解决方案1】:

当您在 Visual Studio 中运行应用程序时,实际修改的配置文件是 appname.vshost.exe.config,因此请务必检查正确的文件。

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

如果您想在调试期间测试正常的 .exe.config 文件,您应该取消选中项目属性的“调试”选项卡中的“启用 Visual Studio 托管进程”框。

此外,如果在您的 app.config 文件中,这两个键已经存在,则使用以下 sn-p 代码:

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

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

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

【讨论】:

    【解决方案2】:

    不要使用ConfigurationManager,而是考虑在 Project\Properties\Settings.settings

    确保您的设置范围是“用户”

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

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

    读取设置:

    String value = Properties.Settings.Default.SettingName;
    

    【讨论】:

    • 我的应用程序不允许我访问 Properties.Settings.Default.SettingName,我得到“当前上下文中不存在名称属性”。
    猜你喜欢
    • 2015-06-05
    • 2011-12-17
    • 1970-01-01
    • 2011-12-12
    • 2018-11-09
    • 2016-01-19
    • 2015-04-03
    • 2011-09-13
    • 1970-01-01
    相关资源
    最近更新 更多