2008-10-02 24 views
6

Konsol uygulamasının App.config dosyasındaki appSettings ve connectionStrings bölümünü şifrelemeye çalışıyorum. Bazı nedenlerden dolayı section.SectionInformation.IsProtected her zaman doğrudur.App.config dosyasındaki Korunan Bölüm Konsol Uygulaması

static void Main(string[] args) 
{ 
    EncryptSection("connectionStrings", "DataProtectionConfigurationProvider"); 
} 

private static void EncryptSection(string sectionName, string providerName) 
{ 
    string assemblyPath = Assembly.GetExecutingAssembly().Location; 
    Configuration config = ConfigurationManager.OpenExeConfiguration(assemblyPath); 

    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && !section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.ProtectSection(providerName); 
     config.Save(); 
    } 
} 

Neden her zaman doğru döndüğünden emin değilsiniz.

cevap

2

Kodunuz geçerli uygulama yapılandırmasını açar. Bunu deneyebilirsiniz:

static void Main(string[] args) 
{ 
    if (args.Length != 0) 
    { 
     Console.Error.WriteLine("Usage : Program.exe <configFileName>"); // App.Config 
    } 
    EncryptSection(args[0], "connectionStrings", "DataProtectionConfigurationProvider"); 
} 

private static void EncryptSection(string configurationFile, string sectionName, string providerName) 
{ 
    Configuration config = ConfigurationManager.OpenExeConfiguration(configurationFile); 
    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && !section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.ProtectSection(providerName); 
     config.Save(); 
    } 
} 
İlgili konular