2013-04-04 74 views
2

我有myapp.somenamespace.exe.config文件帶有connectionStrings節,我需要加密。還有一些我想要的完整的其他配置設置。所以我寫了這個小工具,它會做到這一點:修改配置節將該節保存到不同的配置文件

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

+0

太好了,非常感謝! – Andrey 2013-04-11 14:48:38

+0

@Andrey,我很高興我可以幫助! – 2013-04-11 14:49:03