Шифрование разделов конфигурации - PullRequest
1 голос
/ 18 ноября 2011

Я пытаюсь программно зашифровать разделы конфигурации файлов App.config и Web.config. В следующем коде я задаю файл конфигурации пути, который я хочу редактировать, в переменной configFilePath, а затем ожидаю, что он зашифрует раздел connectionStrings.

        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");

Работает нормально, без ошибок, но не вносит изменений в данный файл. Это похоже на то, что я не получаю доступ к файлу, к которому я хочу получить доступ.

Есть идеи?

1 Ответ

1 голос
/ 18 ноября 2011

Правильно, отвечая на мой собственный вопрос ...

Код действительно не открывал нужный файл конфигурации.Для этого нам нужно использовать ConfigurationManager.OpenMappedExeConfiguration() вместо ConfigurationManager.OpenExeConfiguration().

Итак, первая строка кода выше изменится на:

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