Состояние сеанса ASP.Net SQL Server и состояние постоянного сеанса

Я изучаю и пробую некоторые вещи в отношении автоматического сохранения переменных сеанса в SQL Server. Я нашел эту ссылку, где обсуждают состояние сеанса SQL Server (назовите его" Вариант 1 ") и эту ссылку, посвященную Постоянное состояние сеанса SQL Server (назовите его« Вариант 2 »).

Основное различие, по-видимому, заключается в том, что с вариантом 1, если компьютер, на котором запущен SQL Server, выключен, данные сеанса теряются, в отличие от варианта 2, который сохраняет их. В Варианте 1 кажется, что процесс использует tempdb, тогда как Вариант 2, кажется, сохраняет данные сеанса за счет использования базы данных ASPState.

У меня есть несколько вопросов, на которые я не могу найти ответов:

  1. В первом варианте в статье обсуждается конфигурация, требуемая в веб-конфигурации в отношении тега ‹sessionState>. Это не добавляется к постоянному случаю (вариант 2). Должно ли ‹sessionState> быть одинаковым в обоих случаях?

Я попробовал второй вариант, так как он больше соответствует моему сценарию. Я начал с загрузки PersistSQLState.exe, который просто самостоятельно извлекает сценарии InstallPersistSqlState.sql и UninstallPersistSqlState.sql. Я запустил InstallPersistSQLState.sql, который успешно завершился, и создал базу данных ASPState в SQL Server. Я установил тег ‹sessionState>, используя формат, указанный в Варианте 2, как описано в пункте 1) выше.

При запуске приложения я получил следующую ошибку:

«Невозможно использовать SQL Server, потому что либо состояние сеанса ASP.NET версии 2.0 не установлено на сервере SQL, либо ASP.NET не имеет разрешения на запуск хранимой процедуры dbo.TempGetVersion. Если в схеме состояния сеанса ASP.NET нет был установлен, установите состояние сеанса ASP.NET SQL Server версии 2.0 или выше. Если схема была установлена, предоставьте разрешение на выполнение хранимой процедуры dbo.TempGetVersion либо удостоверению пула приложений ASP.NET, либо пользователю Sql Server. указанный в атрибуте sqlConnectionString. "

Здесь выделяются две вещи: состояние сеанса Asp.Net версии 2.0, которое потенциально еще не установлено, и процесс, неспособный запустить хранимую процедуру dbo.TempGetVersion (по разным причинам).

  1. Хранимая процедура dbo.TempGetVersion не существует в базе данных ASPState, созданной сценарием InstallPersistSqlState.sql. Действительно ли эта хранимая процедура связана с tempdb (непостоянной) и, следовательно, почему схема ASPState не включает ее?

  2. Это состояние сеанса Asp.Net версии 2.0 что нужно установить? Если да, то каков процесс ?! Следует ли его устанавливать в базе данных ASPState после запуска сценария InstallPersistSQLState.sql? Если нет, что именно делать? Ни в Варианте 1, ни в Варианте 2 нет ничего, связанного с этим ".exe"!

  3. Наконец, я также попытался удалить постоянный случай вместо запуска сценариев, относящихся к Варианту 1 (непостоянный). В этом случае скрипты, указанные в первой ссылке выше, не работают; возвращает 2 ошибки с не найденными вакансиями?!. Кто-нибудь знает, почему это могло произойти, и существуют ли правильные скрипты в каком-то онлайн-месте ?!

Любая помощь будет оценена по достоинству, поскольку документация по этому вопросу кажется скудной.


person Jurgen Cuschieri    schedule 13.06.2019    source источник


Ответы (1)


Статьи о вариантах 1 и 2, перечисленные в моем вопросе, вводят в заблуждение, поэтому я потратил целый день, пытаясь заставить его работать с неправильной информацией: у меня просто не было под рукой нужной статьи!

Ниже показано, что я сделал для реализации постоянного состояния сеанса. Надеюсь, это может оказаться полезным для всех, кто хочет реализовать то же самое.

  1. На машине откройте CMD в режиме администратора.
  2. Измените каталог на папку .Net framework:

    компакт-диск C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

  3. Выполните эту команду:

    aspnet_regsql.exe -S "SQLServerInstanceName" -U "Имя пользователя" -P "Пароль" -ssadd -sstype p

Небольшое объяснение команды в пункте 2 выше.

  • Aspnet_regsql.exe - это .exe, который устанавливает состояние сеанса Asp.Net на машине.
  • -S определяет имя экземпляра SQL Server
  • -U определяет имя пользователя -
  • -P определяет пароль
  • ssadd определяет создание новой базы данных для состояния сеанса
  • sstype определяет тип состояния сеанса. p является стойким.

    1. Finally, in the web.config of the Asp.Net application where persistent session state is to be implemented, change the tag to look like the below:

    ‹SessionState mode =" SQLServer "sqlConnectionString =" источник данных = 127.0.0.1 \ sqltest; ID пользователя = *****; Пароль = ****** "cookieless =" false "timeout =" 20 "/>

Для получения полной информации посетите эту статью и обратитесь к режиму SQL Server.

person Jurgen Cuschieri    schedule 14.06.2019