Состояние сеанса ASP.Net SQL Server и состояние постоянного сеанса - PullRequest
0 голосов
/ 13 июня 2019

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

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 14 июня 2019

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

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

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

    cd C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319

  3. Запустите эту команду:

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

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

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

  • Наконец, в файле web.config приложения Asp.Net, где должно быть реализовано постоянное состояние сеанса, измените тег так, как показано ниже:

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

...