Вопрос

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

<sessionState 
    mode="SQLServer" 
    stateConnectionString="tcpip=127.0.0.1:42424" 
    sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password='thepassword'" 
    cookieless="false" 
    timeout="20"/>

На dbServer мы выполнили следующую команду для настройки ASPState db:

aspnet_regsql.exe -S localhost-E -ssadd -sstype p

На веб-сервере мы запустили службу состояний ASP.Net, однако в таблицах ASPStateTempApplications или ASPStateTempSessions не отображаются записи, и похоже, что сессия все еще сохраняется в процессе.

Что не так? Должна ли служба состояний работать на сервере БД? Будет ли он установлен с IIS, потому что он не доступен на этом компьютере, несмотря на установку .net 3.5.1.

Журналы IIS не показывают никаких признаков сбоя. Что не так?

Это было полезно?

Решение

Во-первых, вам не нужно запускать службу состояний, чтобы использовать состояние сеанса SQL Server. Забудьте о службе состояний ASP.NET.

Вы уверены, что на вашем сайте создается переменная сеанса? Если вы внесете эти изменения в ваш файл web.config, то если вы никогда не будете использовать переменные сеанса, он не будет использоваться.

Другие советы

Если вокруг пароля действительно есть кавычки, попробуйте удалить их:

sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password=thepassword"

И удалите следующую строку, у нее нет функции для хранения сеанса SQL:

stateConnectionString="tcpip=127.0.0.1:42424" 

И вы могли бы также остановить государственную службу; это необходимо для состояния сеанса вне процесса, а не для состояния сеанса SQL Server.

Кроме того, состояние сеанса SQL Server требует от вас выполнения InstallSqlState.sql в базе данных, а не aspnet_regsql.exe . Следует создать новую базу данных ASPState .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top