【问题标题】:C# ConfigurationManager does not save changesC# ConfigurationManager 不保存更改
【发布时间】:2015-09-23 23:59:07
【问题描述】:

我有一个自定义配置管理器类,它获取并将键和值设置到配置文件中。我可以获取配置文件中的值,但问题是保存它不会将值的更改保存到配置文件中。

这是我的自定义类

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>

【问题讨论】:

    标签: c# configurationmanager


    【解决方案1】:

    您的代码看起来正确 - 但请确保您查看的是正确的文件。在调试器中检查 config.FilePath 以查看您正在更改的文件。

    您很可能从 VS 运行您的应用程序 - 并希望它更新您的 project root\app.config 文件 - 但您要更新的文件是 project root\bin\debug\app.config

    【讨论】:

    • 它实际上指向我指定的路径 - string configFile = AppDomain.CurrentDomain.BaseDirectory + @"\CsvManager.config";
    • 是的,我正在更新“项目 root\bin\debug\app.config”,但它也是用于获取配置值的路径
    • 配置管理器现在正在保存更改。我改为删除项目根配置文件并保留调试配置文件,将 ConfigurationManager 指向该调试配置文件。
    猜你喜欢
    • 2011-05-12
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多