본문 바로가기
[ Web ]/ASP.NET

ASP.NET Web.config에서 세션상태 설정 방법

by 관이119 2013. 2. 18.

 

 

 

 





출처 - http://blog.naver.com/angeldia/90007183894


ASP.NET에서는 세션 데이터가 저장되는 곳을 외부 서버로 지정할 수 있다. 

세션 상태를 외부에 저장하면 세션 상태를 저장하는 메모리가 ASP.NET 프로세스 내에 존재하지 않으므로 장애로 인해 웹애플리케이션이 재가동 되더라도 복구가 가능하다.

또한 데이터가 차지하는 메모리에 대한 부담을 덜 수 있고 웹애플리케이션의 안정성이 향상된다.

 

Web.config 에서 세션상태 관리를 설정하는 섹션은 <system.web> 내의  <sessionState> 이다.

 

 

<sessionState>의 속성

 

 Attribute

 Description

 mode

 상태를 저장할 위치를 지정한다.

 InProc : 세션 상태가 로컬에 저장된다.

 StateServer : 세션 상태가 원격 서버에 저장된다.

 SQLServer : 세션 상태가 SQL Server에 저장된다.

 cookieless

 클라이언트 세션을 식별하는데 쿠키를 사용할지 여부를 지정한다. (기본값 false)

 true : 쿠키를 사용하지 않는다. 대신 URL에 세션을 식별할 수 있는 문자열을 포함.

 false : 쿠키를 사용한다.

 timeout

 세션타임아웃 시간(분)을 지정한다. (기본값 20분)

 stateConnectionString

 세션 상태가 원격으로 저장되는 서버 이름과 포트를 지정한다.

 sqlConnectionString

 SQL Server 의 연결 문자열을 지정한다.

 

 

<sessionState>의 mode 속성

 

 mode

 Description

 Inproc

 세션정보를 ASP.NET 프로세스의 메모리로 저장된다. 이 모드는 세션 상태를 내부 메모리로 저장하기 때문에 처리 속도가 가장 빠르다는 장점이 있다. 그러나 메모리 관리나 안정성면에서는 다른모드보다 떨어진다.

 StateServer

 ASP.NET 세션정보를 State Service 라는 별도의 애플리케이션에 저장한다. State Service 는 ASP.NET의 세션 정보를 관리해주는 서비스다. 세션 정보를 외부에 저장하면 웹 서버가 다운되더라도 사이트에 접속 중인 사용자의 세션 정보는 별도로 관리되기 때문에 웹서버가 가동되면 기존의 세션 정보를 다시 사용할 수 있다.

 

StateService 애플리케이션 가동 방법

시작 -> 프로그램 -> 관리도구 -> 서비스 -> 서비스 관리자 실행

-> ASP.NET State Service 시작 and 자동으로 설정

 

Web.config 상에 설정

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" />

 SQLServer

 ASP.NET 세션 정보를 MS SQL Server로 저장한다. StateServer 모드와 비교해서 처리 속도는 좀 떨어지지만 좀더 안정적으로 세션 정보가 관리된다는 장점이 있다.

 

SQLServer 모드로 세션 정보를 저장하려면 먼저 세션정보를 관리하는데 필요한 테이블과 저장 프로시저를 생성해 주어야 한다. 이를 위한 스크립트 파일이

InstallSqlState.sql (위치 : C:\<시스템디렉토리>\Microsoft.NET\Framework\<버전번호>\ )이 파일의 스크립트를 SQL 쿼리 분석기를 이용해 실행하면 세션을 관리할 테이블과 저장 프로시저가 생성된다. 실행후 생성되는 ASPState라는 데이터베이스는 세션 정보를 관리할 저장 프로시저를 가지고 있다. 그러나 ASPState 데이터 베이스에 세션정보가 저장되지는 않는다. 실제로 세션정보가 저장되는 곳은 tempdb 데이터 베이스의 ASPStateTempApplications 테이블과 ASPStateTempSessions 테이블이다.

 

Web.config 상에 설정

<sessionState

                mode="SQLServer"

                sqlConnectionString="data source=127.0.0.1;user id=sa;password=xxxx"

/>


댓글