#c# #asp.net #config
#c# #asp.net #конфигурация
Вопрос:
У меня проблема с функцией шифрования моей строки подключения в web.config.
Шифрование работает отлично! Но как только шифрование включено, я теряю содержимое переменной сеанса (исключение Null для переменной сеанса).
Когда я деактивирую шифрование моей строки подключения в 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
Миллион благодарностей за вашу помощь!
Комментарии:
1. Мой код основан на этом веб-сайте: msdn.microsoft.com/en-us/library/89211k9b(v=vs.80).aspx
Ответ №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.