使用DataProtectionConfigurationProvider进行Web配置加密不适用于Production

时间:2017-03-02 06:22:57

标签: asp.net encryption iis-8 webconfigurationmanager web-config-encryption

我使用 DataProtectionConfigurationProvider 来加密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 条件无效。

任何帮助都会很明显!!

1 个答案:

答案 0 :(得分:0)

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

使用以下代码解决了问题:

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