ASP.NET의 애플리케이션 간 세션 공유: .NET 2.0 웹 양식 및 .NET 3.5 MVC2 솔루션
소개
여러 ASP.NET 애플리케이션에서 일관된 세션 데이터를 유지하면 데이터 관리 및 애플리케이션 간 통신이 단순화됩니다. 이 문서에서는 동일한 서버에 있는 .NET 2.0 Web Forms 애플리케이션과 .NET 3.5 MVC2 애플리케이션 간의 세션 공유라는 일반적인 문제를 다룹니다.
문제: 세션 키 불일치
동일한 stateConnectionString
설정으로 StateServer 모드를 사용하는 경우 세션 키는 성공적으로 전송되지만 MVC 애플리케이션은 세션 데이터를 검색하지 못합니다(결과적으로 null sessionKey
이 발생함).
해결책: SQL Server의 기본 세션 상태 활용
권장되는 솔루션은 SQL Server의 기본 세션 상태 관리를 활용하도록 두 애플리케이션을 구성하는 것입니다.
web.config 구성:
두 애플리케이션의 web.config
파일을 다음과 같이 수정합니다.
<code class="language-xml"><sessionState mode="SQLServer" sqlConnectionString="..."/></code>
지정된 SQL Server 인스턴스가 두 애플리케이션 모두에서 액세스 가능하고 필요한 세션 상태 데이터베이스가 있는지 확인하세요.
저장 프로시저 조정:
세션 상태 데이터베이스 내의 TempGetAppID
저장 프로시저를 조정하여 연결 문자열에서 애플리케이션 이름을 동적으로 검색합니다. 이를 통해 이름이 일치하는 애플리케이션이 세션을 공유할 수 있습니다.
<code class="language-sql">@appId int OUTPUT AS ... -- Dynamically obtain the application name from the connection string DECLARE @connStrAppName nvarchar(50) SET @connStrAppName = APP_NAME() ...</code>
일관적인 머신 키 보장:
두 애플리케이션 모두 해당 machineKey
파일에 정의된 동일한 web.config
설정을 사용해야 합니다.
<code class="language-xml"><machineKey decryption="AES" validation="SHA1" validationKey="SOMEKEY"/></code>
이러한 수정을 구현하면 두 애플리케이션 모두 세션 데이터를 원활하게 공유하고 동일한 세션 키를 활용하며 애플리케이션 전체에서 일관된 양식 인증을 유지할 수 있습니다.
위 내용은 .NET 2.0 Web Forms와 .NET 3.5 MVC2 응용 프로그램 간에 ASP.NET 세션 상태를 공유하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!