문제

우리는 다음 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을 작성하는 것은 어떻습니까? 사용자를 새 코드베이스로 전환 해야하는 기간 동안 제자리에 놓을 수 있습니다. 모듈은 각 페이지 요청에서 일부 작업을 수행하여 사용자 세션을 확인하고 포기 해야하는지 여부를 결정할 수 있습니다. 아마도 세션이 처음 생성 될 때 사용자 세션에 응용 프로그램 버전 문자열을 저장하고 현재 앱 버전 문자열을 이와 비교할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top