我已经完成了我的代码,似乎一切正常。我从异步响应中获取了两个值,我正在尝试将其写入appSettings
中的app.Config
但是......当我强制刷新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>`
任何帮助都非常感谢....
答案 0 :(得分:1)
当您在调试中在Visual Studio中运行应用程序时,实际修改的配置文件是 appname.vshost.exe.config ,因此请务必检查正确的文件。
编译项目时,要修改的文件是 appname.exe.config ,而不是源代码文件夹中的app.config。
如果要在调试期间测试正常的.exe.config文件,则应取消选中框&#34;启用Visual Studio托管过程&#34;在&#34; Debug&#34;项目属性的选项卡。
此外,如果您的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;
}
答案 1 :(得分:0)
请考虑添加“设置”,而不是使用ConfigurationManager
Project\Properties\Settings.settings
确保您的设置范围为&#34;用户&#34;
然后您可以通过代码写入设置:
Properties.Settings.Default.SettingName = "Value";
Properties.Settings.Default.Save();
要阅读设置:
String value = Properties.Settings.Default.SettingName;