위즈군의 라이프로그
Reboot... Search /

[ASP.NET] SQL을 이용한 ASP.NET 세션관리 설정 방법

2005. 6. 21. 15:35
ASP에서는 세션이 프로세스상에서 만 관리 되었다. ASP.NET도 프로세스에서 저장하고 관리하는 것이 기본 옵션이다. 그러나 ASP.NET은 추가적인 Session 관리 방식을 제공하고 있다.

크게 in-process 모드out-process 모드 두 가지로 분류된다.

in-process 는 위에서 말한 어플리케이션 프로세스 안에 저장 되고 관리 되는 형식의 기본 세션 관리 방식이다. (전원을 끄거나 IIS 다시 시작 하면 세션 정보가 모두 지워진다. 세션 정보의 공유도 불가능하다.)

out-process 방식은 또 2가지로 나누어 진다. SQL 을 이용한 방식과 Session State Server를 이용한 방식이다.

항목 in-process out-process
IIS재시작 세션정보 사라짐 세션정보 유지
세션정보공유 불가 부분적으로 가능
설정<방식 간단 복잡

여기에서는 out-process 방식 중 SQL을 이용한 방식에 대한 세션관리의 설정 방법을 설명 하려고 한다.

1. web.config 설정
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="data source=[서버이름];
user id=[sql접근계정];
password=[접근비밀번호];"
cookieless="false"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
mode
- 우리는 SQLServer 모드를 사용 할 것이기 때문에 SQLServer 라고 적어준다.

sqlConnectionString
- [서버이름] 에 sql서버의 주소를 적어준다.
- [sql접근계정] 에는 sql 서버에 접속할 계정을 적어주고,
- [접근비밀번호] 에는 비밀 번호를 적어 준다.

cookieless
- 이 옵션은 쿠키를 허용하지 않는 클라이언트에 대해 세션을 사용하기 위한 옵션이다. (세션의 상태를 서버와 클라이언트 동기화를 위한 방법으로 쿠키를 사용하기 때문이다.) 이 부분에 대해서는 다음에 기회가 되면 그때 설명 하고, false 로 설정해서 쿠키를 허용한 많은 사용자를 대상으로 설정하도록 하자.

timeout
- 세션 타임아웃 시간이다.

2. sql server 설정
systemroot\Microsoft.NET\Framework\versionNumber (일반적으로 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 )에보면
  • InstallSqlState.sql
  • InstallPersistSqlState.sql
  • UninstallSqlState.sql
  • UninstallPersistSqlState.sql
4개의 파일을 찾아 볼 수 있다.
SQL을 이용한 방법은 2가지가 있는데 방식은 같지만 세션의 저장 위치가 다르다는 것이다. temp 데이터 베이스를 사용하는 방법과 ASPState 데이터베이스를 생성해 사용하는 방법이다.

temp 데이터 베이스의 경우 서버의 전원을 껐다 킨다든지 하는 SQL 서버의 임시 보관이 지워지면 세션 정보도 역시 지워지게 된다. 그러나 ASPState 를 사용하는 경우 전원을 껐다 켜도 세션에 대한 정보가 살아 있게된다.

InstallSqlState.sql은 임시 데이터베이스에서 작동하도록, InstallPersistSqlState.sql 은 ASPState 데이터 베이스에서 작동되도록 하는 쿼리 파일이다. 자신에게 맞는 쿼리를 실행하면 된다. uninstall은 각각을 제거 하는 것 쿼리로 구성된다.

모드를 변경 할 경우에는 UnInstall을 실행 하고 나서 새로운 모드를 설치 해야 한다.

installSqlState.sql 또는 InstallPersistSqlState.sql 파일을 쿼리 분석기를 이용해서 master에서 실행한다.

그리고 세션 서버에 접속할 계정을 sql 서버에 생성 하고, ASPState, tempdb 해당하는 데이터베이스에 dbo 권한으로 접근 할 수 있도록 설정 하면 된다.

이렇게 해서 세션 서버 설정이 끝났다. 세션 사용은 기존의 사용법과 동일 하다.
요렇게 설정을 하고, 세션관련 테이블을 불러다가 보면 아래 그림과 같이 표시된다.

사용자 삽입 이미지
이렇게 사용을 하면 세션에 대한 정보를 수집하기도 편리해진다.
세션 시작 시간, 만료시간, 갱신시간, 갱신 회수 등을 볼 수 있다.
이런 정보를 이용해서 더 좋은 서비스를 만들어 내는 것은 개발자의 몫입니다.
Category&Tag : [정리중/C# & .NET & Web]
위즈군의 라이프로그

Category

전체 (564)
개발 (0)
일반정보 (0)
IT 일반 (1)
일상&사진 (0)
정리중 (563)

Recent Entry

    Recent Comments

      Recent Trackbacks

        Tags

        Links

          Total:
          Today: / Yesterday:
          Powered by Tistory / Skin by 위즈 라이센스정책 rss 2.0