SQL Server가있는 ASP.NET 세션 상태 서버
-
06-07-2019 - |
문제
우리는 다음 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
Webserver에서 ASP.NET 상태 서비스를 시작했지만 ASPSTATETEMPPLICATIONS 또는 ASPSTATETEMPSESSIONS 테이블에는 레코드가 표시되지 않으며 세션이 여전히 프로세스에 저장되는 것처럼 보입니다.
뭐가 문제 야? 주 서비스가 DB 서버에서 실행되어야합니까? .NET 3.5.1이 설치되어 있음에도 불구하고 해당 컴퓨터에서 사용할 수 없기 때문에 IIS와 함께 설치됩니다.
IIS 로그는 실패의 힌트를 보여주지 않습니다. 뭐가 문제 야?
해결책
먼저 SQL Server 세션 상태를 사용하기 위해 주 서비스를 시작할 필요가 없습니다. ASP.NET State Service를 잊어 버리십시오.
귀하의 사이트가 세션 변수를 작성하고 있다고 확신합니까? 이러한 변경 사항을 web.config에 넣으면 세션 변수를 사용하지 않으면 사용되지 않습니다.
다른 팁
비밀번호 주위에 실제로 인용문이 있으면 제거하십시오.
sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password=thepassword"
다음 줄을 제거하면 SQL 세션 스토리지에 대한 기능이 없습니다.
stateConnectionString="tcpip=127.0.0.1:42424"
그리고 당신은 주 봉사를 막을 수 있습니다. SQL Server 세션 상태가 아닌 프로세스 외부 세션 상태에 필요합니다.
또한 SQL Server Session State는 실행해야합니다. InstallSqlState.sql
데이터베이스에서 aspnet_regsql.exe
. 새로운 것을 만들어야합니다 ASPState
데이터 베이스.
작은 httpmodule을 작성하는 것은 어떻습니까? 사용자를 새 코드베이스로 전환 해야하는 기간 동안 제자리에 놓을 수 있습니다. 모듈은 각 페이지 요청에서 일부 작업을 수행하여 사용자 세션을 확인하고 포기 해야하는지 여부를 결정할 수 있습니다. 아마도 세션이 처음 생성 될 때 사용자 세션에 응용 프로그램 버전 문자열을 저장하고 현재 앱 버전 문자열을 이와 비교할 수 있습니다.