使用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("~");