2008-10-02 12 views
6

estoy tratando de cifrar la sección appSettings y connectionStrings en el archivo app.config de la aplicación de consola. Por algún motivo, section.SectionInformation.IsProtected siempre devuelve verdadero.Sección protectora de App.config archivo de aplicación de consola

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

No estoy seguro de por qué siempre está volviendo cierto.

Respuesta

2

Su código abre la configuración de la aplicación actual. Puede intentar esto:

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