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