使用 DataProtectionConfigurationProvider 的 Web 配置加密不适用于生产
Web config encryption using DataProtectionConfigurationProvider is not working on Production
我已经使用DataProtectionConfigurationProvider加密了web config的连接字符串,在本地可以正常工作。
但是当我将代码上传到生产环境时,网络配置没有被加密。
我使用了以下代码:
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("~");
我已经使用DataProtectionConfigurationProvider加密了web config的连接字符串,在本地可以正常工作。
但是当我将代码上传到生产环境时,网络配置没有被加密。
我使用了以下代码:
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("~");