加密配置部分

发布于 2024-12-16 19:27:29 字数 962 浏览 1 评论 0原文

我正在尝试以编程方式加密 App.config 和 Web.config 文件的配置部分。在下面的代码中,我在 configFilePath 变量中设置了要编辑的路径配置文件,然后期望它加密 connectionStrings 部分。

 var config = ConfigurationManager.OpenExeConfiguration(configFilePath);
        varsection = config.GetSection(“connectionStrings”);
        if (section.SectionInformation.IsProtected)
        {
            section.SectionInformation.UnprotectSection();
            section.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("connectionStrings");
        }

        section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
        section.SectionInformation.ForceSave = true;
        config.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("connectionStrings");

这运行良好,没有任何错误,但不会对给定文件进行任何更改。就好像它并没有真正访问我想要访问的文件。

有什么想法吗?

I'm trying to programmatically encrypt configuration sections of App.config and Web.config files. In the following code, I set the path configuration file I want to edit in the configFilePath variable and then expect it to encrypt the connectionStrings section.

        var config = ConfigurationManager.OpenExeConfiguration(configFilePath);
        var section = config.GetSection("connectionStrings");
        if (section.SectionInformation.IsProtected)
        {
            section.SectionInformation.UnprotectSection();
            section.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("connectionStrings");
        }

        section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
        section.SectionInformation.ForceSave = true;
        config.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("connectionStrings");

This runs fine without any errors but makes no changes to the given file. It's like it's not really accessing the file I want to access.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

自我难过 2024-12-23 19:27:29

是的,回答我自己的问题...

代码确实没有打开正确的配置文件。为此,我们需要使用 ConfigurationManager.OpenMappedExeConfiguration() 而不是 ConfigurationManager.OpenExeConfiguration()

因此,上面代码的第一行改为:

var map = new ExeConfigurationFileMap { ExeConfigFilename = configFilePath };   
var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

Right, answering my own question...

The code was indeed not opening the right config file. To do that we need to use ConfigurationManager.OpenMappedExeConfiguration() instead of ConfigurationManager.OpenExeConfiguration().

So, the first line of the code above changes to:

var map = new ExeConfigurationFileMap { ExeConfigFilename = configFilePath };   
var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文