修改配置部分将该部分保存到不同的配置文件

Posted

技术标签:

【中文标题】修改配置部分将该部分保存到不同的配置文件【英文标题】:Modifying a config section saves that section to a different config file 【发布时间】:2013-03-25 23:30:00 【问题描述】:

我有一个带有 connectionStrings 部分的 myapp.somenamespace.exe.config 文件,我需要对其进行加密。还有一些我想要完整的其他配置设置。所以我写了这个小工具来做这件事:

class Program

    static void Main(string[] args)
    
        EncryptSection("myapp.somenamespace.exe.config", "connectionStrings");
    
    static void EncryptSection(string fileName, string sectionName)
    
        var config = ConfigurationManager.OpenExeConfiguration(fileName);

        var section = config.GetSection(sectionName);

        if (section.SectionInformation.IsProtected) return;

        secction.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");

        config.Save();
    

会发生什么,它会创建一个名为 myapp.somenamespace.exe.config.config 的新配置文件 - 添加一个重复的 .config 扩展名,该扩展名仅包含加密部分。它不会修改原始配置文件。

有什么想法为什么会出现这种奇怪的行为以及我该如何解决?

【问题讨论】:

【参考方案1】:

改变这一行:

EncryptSection("myapp.somenamespace.exe.config", "connectionStrings");

到这里:

EncryptSection("myapp.somenamespace.exe", "connectionStrings");

the documentation on MSDN 声明第一个参数实际上是he path of the executable (exe) file,因此它在Save 期间添加了一个额外的.config

【讨论】:

@Andrey,很高兴能为您提供帮助!

以上是关于修改配置部分将该部分保存到不同的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

kafka集群安装配置

vba修改INI中指定的项

thinkphp为啥我无法修改配置文件

hadoop 配置文件部分

无法使用 sqoop 将表导入到不同文件中的配置单元(例如 part-0000、part-00001、part-00002)

如何在配置文件中获取环境值