관리 메뉴


Kinesis´s Open Document

ASP.NET C# - DB(Database for MSSQL)를 이용한 Session 환경 구성하기 본문

MEMO/기술 자료/C# Language

ASP.NET C# - DB(Database for MSSQL)를 이용한 Session 환경 구성하기

Kinesis 2012. 10. 2. 02:43

ASP.NET C# 에서 DB(Database)를 이용해 세션을 관리 하는 이유.

ASP.NET 환경에서 세션의 구성을 DB로 돌리는 이유는 여러가지가 있다. 개발도중에 세션이 계속 끊기는 문제를 방지하기 위함이기도 하고, 접속자나 세션의 관리를 좀 더 편히 하기 위함도 있다. 이유야 가지각각 여러가지가 있지만, 나 개인적으로는 개발시 조금 더 편한 개발을 위해서 사용하고 있다.

 

이 글에는 MSSQL 을 이용한 세션 DB 생성 및 테스트 과정을 담아두고자 한다. 나중에 써먹을려고 볼 때 까먹으면 다시 시간적 소요가 들어가기 때문에 남기며, 또한 그대가서 찾아봤을때, 내가 보았던 게시물이 없어졌을 경우를 위해서도 남기는 글이다.

 

 

첫번째로. "명령 프롬프트를" 를 관리자모드에서 실행시킨다. 그럼 보통은 운영체제가 설치된 폴더 내의 system32 라는 디렉터리(개념적으로 폴더와 같다고 보면 된다)의 위치에서 시작이 될 것이다. "cd.."의 명령을 통해 한단계 위로 가주고, 다시 "cd Microsoft.Net" 명령어를 통해 Microsoft.Net 디렉터리로 이동해준다. 다시 "cd framework" 명령을 통해 Framework 디렉터리로 이동해준다. 보통은 v2.0.50727 이라는 디렉터리가 있을 것인데 없으면 dir 을 통해 존재하고 있는 디렉터리가 무엇이 있는 확인한 다음 해당 디렉터리로 이동해준다. (디렉터리를 분별하는 방법은 이름 앞과 뒤에 [ ] 의 괄호가 붙어있는 것을 통해 알 수 있다.) 위의 화면에서는 v2.0.50737 디렉터리로 "cd microsoft.net\framework\v2.0.50727" 명령을 통해 바로 이동하는 것을 확인 할 수 있다.

 

 

이제 MSSQL 에 로그인을 해서 확인해보면 위와 같이 『 ASPState 』 라는 이름의 DB(Database) 가 생성된 것을 확인 할 수 있고, 해당 DB의 ASPStateTempSessions 테이블을 조회해보면 현재 생성되어 있는 세션을 확인해 볼 수 있다. 이처럼 DB 준비가 되면 해당 세션 DB를 컨트롤할 유저를 추가하기 위한 과정으로 넘어가보자.

 

 

좌측의 『 개체 탐색기 』 창에서 『 보안 』 -> 『 로그인 』 폴더모양에 마우스 오른쪽을 클릭하여 『 새 로그인 』 을 클릭한다.

 

『 로그인 이름 』에는 로그인에 사용될 아이디명을 넣으면 되는데, 혹시나 해서 적어두지만 혹여라도 한글로 만드는 것은 피하도록 한다. 아이디를 적고 나면 인증 타입을 SQL Server 인증 을 선택하고 로그인에 사용할 패스워드를 입력해 주자. 주의할 점은 이것으로 완료하지 않는것이다. 세션 db에 대한 사용 권한을 부여해줘야하므로 『 사용자 역할 』 이라는 좌측의 항목을 눌러 db 권한 설정으로 넘어간다.

 

 

위와 같이 『 사용자 역할 』 설정 폼이 보여지면, ASPState 의 매핑에 체크를 해주고, 하단의 자격 부분의 목록 중에 『 db_datareader 』, 『 db_datawriter 』 , 『 public 』, 『 db_owner 』부분에 체크를 해주도록 하자. 권한에 대해 설명을 더하자면 좌측에 작성한 순서대로 "읽기 권한", "쓰기 권한", "열람", "소유권" 으로 볼 수 있는데, 단순히 읽기, 쓰기만 주었을 경우 IIS에서 설정한 것만으로는 접근이 안되는 경우가 있기 때문에 "소유권" 권한까지 부여해놓는 것이라고 이해하면 되겠다.

 

 

앞서의 준비가 끝나면 이제 IIS 에서 사용될 웹서비스 환경 파일 (Web.config) 파일을 수정할 차례이다.

 

xpath 형식 경로 기준으로 『 /configuration/system.web 』하단으로 다음과 같은 구문을 추가한다.

 

<sessionState allowCustomSqlDatabase="true" cookieless="UseCookies" mode="SQLServer" sqlCommandTimeout="3600" sqlConnectionString="Server=localhost;Database=ASPState;User ID=Your_Identity;Password=Your_Password" timeout="60" /> 

 

만일 폼인증 까지 사용할 경우 다음의 구문까지 추가해주면 된다. 본인은 아래 구문까지 첨부하여 테스트를 했다.

 

<authentication mode="Forms" />

 

 

해당 서비스로 접근하여 확인한 화면의 모습이다. 폼인증을 통해 페이지가 뜸과 동시에 인증을 되도록 간단하게 짜놨다보니 하단의 인증 상태여부를 나타내는 True 값이 보인다.

 

 

마지막으로 세션값이 정상적으로 db에 써지는지 확인을 해보자. 위와 같이 자신이 원했던 대로 만들어졌다면 성공이다.

 

- 2012.10.02 작성 by Kinesis


Comments