C# ConfigurationManager 不保存更改
C# ConfigurationManager does not save changes
我有一个自定义配置管理器 class,它可以在配置文件中获取和设置键和值。我可以获取配置文件中的值,但问题是保存它不会将值的更改保存到配置文件中。
这是我的习惯class
public class CsvManagerConfiguration
{
private readonly Configuration config;
public CsvManagerConfiguration()
{
string configFile = AppDomain.CurrentDomain.BaseDirectory + @"\CsvManager.config";
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configFile);
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
public string GetValue(string name)
{
//return ConfigurationManager.AppSettings[name];
return config.AppSettings.Settings[name].Value;
}
public void SetValue(string name, string value)
{
//ConfigurationManager.AppSettings[name] = value;
config.AppSettings.Settings[name].Value = value;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
和配置文件内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Format" value="StoresFixedPrice"/>
<add key="Duration" value="GTC"/>
<add key="AcceptPaypal" value=""/>
<add key="PaypalEmail" value=""/>
<add key="Location" value="10969"/>
<add key="DispatchTimeMax" value="3"/>
<add key="ReturnsAcceptedOption" value="ReturnsAccepted"/>
<add key="InputFileDelimiter" value="tab"/>
<add key="HtmlTemplateFilePath" value="template.html"/>
</appSettings>
</configuration>
您的代码看起来是正确的 - 但请确保您查看的是正确的文件。在调试器中检查 config.FilePath
以查看您正在更改的文件。
很可能您 运行 来自 VS 的应用程序 - 并期望它更新您的 project root\app.config
文件 - 但您正在更新的文件是 project root\bin\debug\app.config
我有一个自定义配置管理器 class,它可以在配置文件中获取和设置键和值。我可以获取配置文件中的值,但问题是保存它不会将值的更改保存到配置文件中。
这是我的习惯class
public class CsvManagerConfiguration
{
private readonly Configuration config;
public CsvManagerConfiguration()
{
string configFile = AppDomain.CurrentDomain.BaseDirectory + @"\CsvManager.config";
AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", configFile);
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
public string GetValue(string name)
{
//return ConfigurationManager.AppSettings[name];
return config.AppSettings.Settings[name].Value;
}
public void SetValue(string name, string value)
{
//ConfigurationManager.AppSettings[name] = value;
config.AppSettings.Settings[name].Value = value;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
和配置文件内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Format" value="StoresFixedPrice"/>
<add key="Duration" value="GTC"/>
<add key="AcceptPaypal" value=""/>
<add key="PaypalEmail" value=""/>
<add key="Location" value="10969"/>
<add key="DispatchTimeMax" value="3"/>
<add key="ReturnsAcceptedOption" value="ReturnsAccepted"/>
<add key="InputFileDelimiter" value="tab"/>
<add key="HtmlTemplateFilePath" value="template.html"/>
</appSettings>
</configuration>
您的代码看起来是正确的 - 但请确保您查看的是正确的文件。在调试器中检查 config.FilePath
以查看您正在更改的文件。
很可能您 运行 来自 VS 的应用程序 - 并期望它更新您的 project root\app.config
文件 - 但您正在更新的文件是 project root\bin\debug\app.config