我有这样的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="key1" value="value1" />
<add key="key2" value="" />
...
</appSettings>
...
</configuration>
我读取配置,更改key1的值并保存配置
System.Configuration.Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Configuration.ConfigFile.Replace(".config", string.Empty));
appConfig.AppSettings.Settings["key1].Value = "newvalue1";
appConfig.Save(ConfigurationSaveMode.Minimal);
在此之后我得到以下结果:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="key1" value="newvalue1" />
<add key="key2"/>
...
</appSettings>
...
</configuration>
为什么键“key2”的'empty'值属性被删除了? 当我尝试
appConfig.Save(ConfigurationSaveMode.Modified);
,不删除该属性。但我想知道为什么它在第一种情况下被删除了?
由于
答案 0 :(得分:1)
<add key="key2" value="" />
和
<add key="key2" />
在功能上都是平等的。带或不带标记的key2的值是一个空字符串变量,它等同于空字符串。
编辑以反映注释:只需在同一语句中为key2指定空字符串。
System.Configuration.Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Configuration.ConfigFile.Replace(".config", string.Empty));
appConfig.AppSettings.Settings["key1"].Value = "newvalue1";
appConfig.AppSettings.Settings["key2"].Value = "";
appConfig.Save(ConfigurationSaveMode.Minimal);
第二次评论第二次评论:
那么,你还没有提供足够的信息。我的所有答案都回答了你的问题。第一个答案中的两个值在功能上是等效的。因此,如果你想看看&#34; key2&#34;值=&#34;&#34;然后你可以简单地运行以下
if(appConfig.AppSettings.Settings["key2"] == null){
//If this hits, that means <add key="key2" value="" />
}
请研究如何提出一个好问题并调整问题,以反映您真正想要问的问题。