SQL 서버 Session 모드는 좀더 보안적이며 신뢰할 수 있는 session 관리를 ASP.NET 에서 제공합니다. 이 SESSION MOD E 에서 SESSION 데이터는 직렬화를 하며 SQL SERVER 데이터에 저장을 합니다. 이는 전형적으로 웹팜에서 사용이 됩니다.SQL SERVER 는 InProc 또는 State Server Mode 보다 좀 더 보안적입니다. 이는 sql server 보안 환경에 의해 데이터를 쉽게 보안이 될수 있습니다. (보안 강화)
주요 세션에 대한 단점은 직렬화 그리고 역직렬화로 오버해드 될 수 있습니다. (비용발생)
SQL SERVER 를 SETUP 하기 위해서 아래와 같은 2개의 SQL 스크립트가 필요합니다.
설치파일 : InstallSqlState.sql
제거파일: UninstallSQLState.sql
SQL Server를 구성하는 가장 쉬운 방법은 aspnet_regsql 명령을 사용하는 것입니다.
configuration section 에서 이러한 파일의 사용에 대해 자세히 설명했습니다.
일반적으로 애플리케이션에 InProc, StateServer 또는 SQLServer 세션 모드를 사용하지만 Custom 세션 모드의 기본 사항도 알아야 합니다.이 세션 모드는 커스텀 세션이 우리에게 세션 ID를 포함한 모든 것을 생성할 수 있는 모든 권한을 부여하기 때문에 매우 흥미롭습니다.고유한 알고리즘을 작성하여 세션 ID를 생성할 수 있습니다.
이를 가지고 session ID 에 대한 자신의 알로리즘을 개발할 수 있습니다.SessionStateStoreProviderBase 기본 클래스에서 가져온 또 다른 저장 매카니즘으로 세션 데이터를 custom 제공자로 구현할 수 있습니다. 이 뿐만 아니라ISessionIDManager구현으로 새로운 sesson ID 를 generate 할 수 있습니다. 여기에는 아래와 같은 메소드들이 Custom Session 의 구현을 하는 동안 호출됩니다.
SessionStateStoreProviderBase 단순히 클래스에서 파생하여 다른 저장소 메커니즘에 세션 데이터를 저장하는 Customproviders 를 구현할 수 있습니다 . 이 ISessionIDManager 를 구현하여 새 sesson ID 를 생성할 수도 있습니다. Custom Session을 구현하는 동안 호출되는 메서드는 다음과 같습니다.
Initialize 메서드에서 사용자 지정 공급자를 설정할 수 있습니다. 그러면 해당 공급자와의 연결이 초기화됩니다. SetItemExpireCallback은 SessionTimeOut을 설정하는 데 사용됩니다.
세션 만료 시 호출할 메서드를 등록할 수 있습니다. InitializeRequest는 모든 요청에서 호출되고 CreateNewStoreData는 SessionStateStoreData의 새 인스턴스를 생성하는 데 사용됩니다.