在web.config中加密的连接字符串发生错误

本文关键字:字符串 错误 连接 web config 加密 | 更新日期: 2023-09-27 18:11:59

我在web.config中连接字符串的加密功能有问题。

加密工作完美!但是,一旦启用加密,我就会丢失会话变量内容(会话变量上的Null异常)。

当我在网络中禁用我的连接字符串加密时。配置后,一切恢复正常。

下面是我加密连接字符串的代码:

#region Constructeur
static QueryManager()
{
  Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
  ConnectionStringsSection section = config.GetSection("connectionStrings") as 
                                     ConnectionStringsSection;
  if (section.SectionInformation.IsProtected)
  {
    section.SectionInformation.UnprotectSection();
    config.Save(ConfigurationSaveMode.Minimal);
  }
  if ((myConnectionString = 
       ConfigurationManager.ConnectionStrings["DBConnect"].ConnectionString) == null)
  {
    throw new ConfigurationErrorsException("Database server not configured");
  }
  section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
  config.Save(ConfigurationSaveMode.Minimal);            
}
#endregion

非常感谢您的帮助

在web.config中加密的连接字符串发生错误

这个错误来自于设计错误。

解决方案如下:

  • 首先,加密必须从应用程序外部进行,以避免每次向数据库发出请求时都保存加密/解密。

:

static QueryManager()
{
  Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
  ConnectionStringsSection section = config.GetSection("connectionStrings") as 
                                     ConnectionStringsSection;
  if (section.SectionInformation.IsProtected)
  {
    section.SectionInformation.UnprotectSection();
  }            
  myConnectionString = section.ConnectionStrings["DBConnect"].ConnectionString;
  if (unikSignConnectionString == null)
  {
    throw new ConfigurationErrorsException("Database server not configured");
  }
}

这样,连接字符串在内存中解密并使用而不会产生任何问题,它避免了对web.config的许多无用的读写。