2008-10-02 4 views
6

Ich versuche, den Abschnitt appSettings und connectionStrings in der App.config-Datei der Konsolenanwendung zu verschlüsseln. Aus irgendeinem Grund gibt section.SectionInformation.IsProtected immer True zurück.Schutzabschnitt in der App.config-Datei Konsolenanwendung

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(); 
    } 
} 

Nicht sicher, warum es immer wahr zurückgibt.

Antwort

2

Ihr Code öffnet die aktuelle Anwendungskonfiguration. Sie können dies versuchen:

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(); 
    } 
}