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.