Продолжая цикл записей на тему освоения новых технологий. Сегодня на обсуждение выносится модель кукисов в системе ASP.NET. По умолчанию ASP.NET хранит информацию о сессиях в своей памяти. Перезагрузили сервис – все сессии потерялись. Неприятно для пользователя, который решил запомниться на сайте. Правильное решение – хранить cookies в БД. Найти в MSDN подробно о том, как это можно сделать мне не удалось за короткий промежуток времени, поэтому освещаю этот вопрос здесь.

Итак, нам нужно:

  1. Visual Studio/MS SQL Management Tool
  2. MS SQL Server
  3. web.config

Во-первых, стоит определить строку подключения к БД. Для этого воспользуемся мастером Visual Studio Server Explorer. При помощи этого мастера установите подключение к БД, и затем кликнув на значек БД в Server Explorer посмотрите в менеджере Properties пункт Connection String. В моем случае это: Data Source=KROLM_NOTE;Initial Catalog=gv;Integrated Security=True

Во-вторых, необходимо создать соответствующие настройки в настройках приложения web.config:

<authentication mode=»Forms»>
<forms name=»loginookie»
timeout=»30″ />
</authentication>
<sessionstate mode=»SQLServer» timeout=»30″ allowCustomSqlDatabase=»true» sqlConnectionString=»Data Source=KROLM_NOTE;Initial Catalog=gv;Integrated Security=True»>
</sessionstate>

В-третьих, надо подготовить БД для хранения сессий. Запускаем командную строку, переходим в папку (может отличаться в зависимости от версии .NET)
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
запускаем утилиту для создания необходимых таблиц и хранимых процедур:
aspnet_regsql.exe -ssadd -sstype c -C «Data Source=KROLM_NOTE;Initial Catalog=gv;Integrated Security=True»

Не забудьте в кавычках использовать собственную строку подключения.

Читайте также: