2008-10-02 82 views
6

我試圖加密控制檯應用程序的App.config文件中的appSettingsconnectionStrings部分。由於某種原因,section.SectionInformation.IsProtected總是返回true。保護App.config文件中的部分控制檯應用程序

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

不知道爲什麼它總是返回true。

回答

2

您的代碼打開當前的應用程序配置。你可以試試這個:

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(); 
    } 
} 
相關問題