Подтвердить что ты не робот

Режим состояния сеанса asp.net "SQLServer"

"Мой сайт LIVE. И эта проблема связана с настройкой тайм-аута сеанса на LIVE-сервере, а не на локальном хосте."

У меня проблема с истечением сеанса слишком рано. ссылку только через 2-5 минут. Я пробовал много вещей и, наконец, решил сохранить сеанс в режиме "SQL Server"

в моем файле web.config у меня есть следующее кодирование:

<sessionState mode="SQLServer" cookieless="false" timeout="45"
sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/>

и у меня есть все таблицы, необходимые в таблице ASPState на сервере. Вы можете видеть это на изображении ниже.

enter image description here

Но когда я запускаю свое приложение, он выдает следующую ошибку:

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

Изображение ошибки:

enter image description here

Я не могу понять точную проблему и как я могу ее решить. Любая помощь будет оценена.

Спасибо

4b9b3361

Ответ 1

Откройте "Программируемость" в своем дереве и сначала проверьте, существует ли dbo.TempGetVersion. Возможно, вы не установили правильную схему.

Ответ 2

Чтобы заставить это работать для меня, я выполнил команду со следующими параметрами.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p

Я полагаю, что параметр -ssadd ( "Добавляет поддержку состояния сеанса режима SQL Server" ) заставляет его правильно настроить хранимые процедуры. См. Эту ссылку для получения полного списка параметров.

Ответ 3

Возможно, у вас есть плохой тег в вашем web.config

Правильный пример:

<sessionState 
allowCustomSqlDatabase="true" 
mode="SQLServer" 
sqlConnectionString="data source=localhost;initial catalog=YourAspStateDatabase;user id=yourLogin;password=yourpassword" cookieless="false" timeout="30"/>

Ответ 4

Я застрял в этом, и ни один из ответов не работал у меня, на всякий случай, если кто-то другой столкнулся с этой проблемой, это то, что решило мою проблему, я побежал в cmd:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -C "Data Source=.\SQL2012;Integrated Security=True" -ssadd

На всякий случай кто-то застрял в той же ситуации, что и я.

Ответ 5

Вся эта информация чрезвычайно ценна, но в зависимости от вашей ситуации есть еще несколько ценных замечаний.

Если вы запустили мастер, он не запускается с флагом -ssadd. Флаг -ssadd - это то, что создает процедуру dbo.TempGetVersion, а также другие процедуры.

Если вы собираетесь на пользовательский сервер/базу данных, вам нужно запустить программу следующим образом...

aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
  • -S твой флаг сервера.
  • -D - ваш флаг имени базы данных
  • -ssadd Добавляет поддержку состояния сеанса режима SQLServerm. Запустите -S sremove, если вам нужно удалить процедуры.
  • -E использует текущие учетные данные Windows для подключения к целевой базе данных для настройки.
  • -S stype c говорит, что это пользовательское имя базы данных.