SQLServer SessionState

Я использую InProc в режиме SessionState, но мое приложение продолжает перезапускаться из-за перезапуска пула приложений, поэтому я теряю сеанс зарегистрированных в данный момент пользователей. Я хочу изменить, чтобы сохранить его в базе данных. Я отредактировал свой webconfig вот так

<sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true"
    sqlConnectionString="Data Source=Server;integrated security=True;Initial Catalog=SerialTracker;"
    cookieless="false" />

Нужно ли создавать таблицы для состояния сеанса или новой базы данных? Мой хостинг является общим, поэтому я не могу получить доступ к консоли администратора или что-либо еще.

3 ответа

Решение

Здесь есть пошаговая инструкция по использованию. Кажется, вам нужно будет запустить файл SQL с именем InstallSqlState.sql в базе данных.

Да, вы должны использовать скрипт InstallSqlState.sql, который вы можете найти - в зависимости от компьютера - в%System Drive Letter%/Microsoft .NET/Framework/%v.????%

Пример: c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallSqlState.sql

Также учтите, что скрипт создает базу данных AspState, которая по умолчанию не будет хранить данные сеанса: они будут храниться в таблице tempdb.

Если это не подходит для вас, есть способ сохранить данные в AspState DB, посмотрите здесь.

Начиная с 2015 года вам не нужно запускать скрипт, пакет Universal Provider использует Entity Framework для создания необходимой ему таблицы.

Я использовал NuGet/Package Manager для установки пакета "Microsoft ASP.NET Universal Providers" (в настоящее время v 2.0.0), который также устанавливает Core:

Установить-пакет Microsoft.AspNet.Providers

Он вставляет некоторые (закомментированные) элементы в ваш файл web.config. Я следовал инструкциям в комментарии, чтобы изменить "InProc" на "Custom" и установить его со строкой подключения к моей базе данных. При первом запуске он создает таблицу 'Sessions' в моей базе данных и сохраняет там данные сеанса.

Я не уверен, что он будет делать, если у вас уже есть таблица сессий в вашем проекте.

ps - я удалил теги 'profile', 'members' и 'rolemanager', которые он вставил, так как мне нужно только сохранить материал сеанса, а не остальную часть идентификатора asp.

Другие вопросы по тегам