使用DataProtectionConfigurationProvider的Web配置加密在生产上不起作用

问题描述:

我已经使用DataProtectionConfigurationProvider来加密web配置的连接字符串,它在本地工作正常。使用DataProtectionConfigurationProvider的Web配置加密在生产上不起作用

但是当我将代码上传到生产环境时,Web配置没有得到加密。

我用下面的代码:

Configuration config = 
       WebConfigurationManager.OpenWebConfiguration("/"); 
      // Let's work with the <connectionStrings> section 
      ConfigurationSection connectionStrings = config.GetSection("connectionStrings"); 
      if (connectionStrings != null) 
      { 

       // Only encrypt the section if it is not already protected 
       if (!connectionStrings.SectionInformation.IsProtected) 
       { 
        // Encrypt the <connectionStrings> section using the 
        // DataProtectionConfigurationProvider provider 
        connectionStrings.SectionInformation.ProtectSection(
         "DataProtectionConfigurationProvider"); 
        config.Save(); 
       } 
      } 

我通过将日志跟踪的代码,发现connectionStrings.SectionInformation.IsProtected条件不工作!

任何帮助将是可观的!

问题出在WebConfigurationManager.OpenWebConfiguration(“/”)中的“/”路径。我的应用程序托管在虚拟目录中。

使用下面的代码来解决这个问题:

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");