Состояние сеанса SQLServer

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

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

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


person zdarsky.peter    schedule 05.03.2013    source источник


Ответы (3)


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

person Ralf de Kleine    schedule 05.03.2013
comment
Между тем этот файл содержит примечание о том, что вы не должны запускать его напрямую, а использовать aspnet_reqsql.exe, как описано здесь: msdn.microsoft.com/en-us/library/ms178586%28v=vs.100%29.aspx - person Niklas Peter; 13.08.2015
comment
Я последовал совету сценария и запустил его через командную строку Visual Studio вместо прямого запуска сценария SQL. Например, чтобы установить его на моем локальном компьютере, я использовал следующую строку: aspnet_regsql.exe -ssadd -sstype p -S . -Э - person Justin; 11.03.2021

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

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

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

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

person vulcanik    schedule 23.05.2013

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

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

Пакет установки Microsoft.AspNet.Providers

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

Я не уверен, что бы он сделал, если бы в вашем проекте уже была таблица «Сеансы».

ps - я удалил вставленные теги «профиль», «членство» и «менеджер ролей», так как мне нужно хранить только данные сеанса, а не остальную часть идентификатора asp.

person bitcoder    schedule 18.06.2015