我在web.config中的连接字符串的加密功能有问题。
加密效果很好!但是一旦启用加密,我就会丢失Session变量内容(会话变量的空例外)。
当我在web.config中停用加密连接字符串时,一切都恢复正常。
这是我的连接字符串加密代码:
#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
万分感谢你的帮助!
答案 0 :(得分:1)
错误来自设计错误。
以下是解决方案:
然后:
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的许多无用的读写。