■ 간단한 Session 생성해보자.
1. aspx 파일을 생성
2. Label 생성
3. 디자인화면에서 더블클릭해서 코딩을 하자.
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text = Session.SessionID;
Session.Timeout = 5; // 5분 뒤 소멸하겠다는 뜻.
Session["num"] = 100; // 값을 입력하고..
Label1.Text += Session["num"].ToString(); // 값을 꺼내오자
}
4. 브라우저를 띄워보자.
■ Session 을 내 컴이 아닌 다른 컴에 저장시켜보자.
클라이언트 100명이 서버에 달라붙어서 작업을 하고 있었어.
순간적으로 전기가 나갔고 1분만에 복구를 한다면..
기본 사람들이 전부 '로그아웃'이 되어버려..
근데 Session을 다른 컴에 옮겨놓으면 전기가 나가도 Session 이 유지되지.
다만 전원이 나간 경우에 새로들어온 사용자들은 불편을 느끼겠지.
▶ 이게 세션을 분리시키는 첫번째 방법이야.
▶ 이번에는 세션을 DB에 저장을 시키는 두 번째 방법이야. 꾸준한 기록관리가 가능하지..(이런 방법이 많지는 않어.)
DB 에 세션을 보관한다고 치면 웹서버가 여러개더라도 상관이 없어. 공유를 시켜놓으면 가능하다는 거지.
※ Web.config를 간단히 살펴보면
sessionState
mode = "Off | InProc | StateServer | SQLServer"; // 세션이 필요없다면 끄라는거야. 세션은 서버메모리에 상주하거든.
↑ InProc는 서버메모리에 '세션'을 올려다 쓰기에 가장 빠르고 보안측면에서 가장 좋아.
안정성면에 있어서는 떨어져. 웹서버가 죽으면 세션도 같이 죽어버리거든..
↑ StateServer 로 할려면 관리도구에서 를 선택하고
를 선택한 다음..
'시작'을 클릭...
웹서비스에만 문제가 있어도 세션이 유지가 되는 이점이 있어.
의도적으로 웹서비스를 중지하려면 에서 을
을 중지했다가 다시 시작버튼을 누리면 되고...
즉, 웹서비스가 중지되었다고 시작되면 세션의 정보가 원래는 날라가게 되어있지.
글을 쓰다가 웹서비스가 중단되면 쓰던 글이 다 날라간다는 뜻이야..
근데, 녀석으로 셋팅을 한다면
웹서비스가 죽더라도 클라이언트는 모르고 '세션'도 죽지않고 살아있다는 거야..
'세션'을 관리하는 프로세서는 살아있기 때문에 가능한거야..
↑ SQLServer 를 사용할려면 쿼리분석기를 일단 실행시켜.
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 에 위치한 를 복사해서
쿼리분석기에서 실행시켜보면 먼가 생성이 된것을 확인 할 수 있어.
요점은.... '세션'을 DB에 저장시켜놓고 관리하다는 거지.
▶▶ 솔루션탐색기에서 을 열어보자.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<!-- 동적 디버깅 컴파일
ASPX 디버깅을 사용하려면 compilation debug="true"로 설정합니다. 이렇게 하지 않고
해당 값을 false로 설정하면 이 응용 프로그램의 런타임 성능이 향상됩니다.
컴파일된 페이지에 디버깅 기호(.pdb 정보)를 삽입하려면 compilation debug="true"로 설정합니다.
이렇게 하면 파일 크기가 커져서 실행 속도가 느려지므로
디버깅하는 경우에만 이 값을 true로 설정하고
디버깅하는 경우 외에는 모두 false로 설정합니다. 자세한 내용은 ASP.NET 파일 디버깅에 관한
설명서를 참조하십시오.
-->
<compilation
defaultLanguage="c#"
debug="true"
/>
<!-- 사용자 지정 오류 메시지
사용자 지정 오류 메시지를 사용하려면 customErrors mode="On" 또는 "RemoteOnly"로 설정하고 사용하지 않으려면 "Off"로 설정합니다.
처리할 각 오류에 <error> 태그를 추가하십시오.
"On" 항상 사용자에게 친숙한 메시지가 표시됩니다.
"Off" 항상 자세한 ASP.NET 오류 정보가 표시됩니다.
"RemoteOnly" 로컬 웹 서버에서 액세스하지 않는 사용자에게만 사용자에게 친숙한
메시지가 표시됩니다. 이 설정은 원격 클라이언트에서 응용 프로그램의 자세한 정보가
표시되지 않도록 보안을 강화할 때 사용하면 좋습니다.
-->
<customErrors
mode="RemoteOnly"
/>
<!-- 인증
이 섹션에서는 응용 프로그램의 인증 정책을 설정합니다. 가능한 모드로는 "Windows",
"Forms", "Passport" 및 "None"이 있습니다.
"None"을 지정하면 인증이 수행되지 않습니다.
"Windows"를 지정하면 IIS가 인증 설정에 따라 인증을 수행합니다(기본, 다이제스트 또는 Windows 통합 인증).
익명 액세스는 IIS에서 비활성화시켜야 합니다.
"Forms"를 지정하면 사용자에게 자격 증명을 입력할 수 있는 사용자 지정 양식(웹 페이지)를
표시하여 사용자를 응용 프로그램에서 인증합니다. 사용자 자격 증명 토큰은 쿠키에 저장됩니다.
"Passport"를 지정하면 인증이 Microsoft에서 제공하는 중앙 집중식 인증 서비스를 통해 수행되며,
이 서비스는 멤버 사이트에 대해 단일 로그온과 핵심 프로필 서비스를 제공합니다.
-->
<authentication mode="Windows" />
<!-- 권한 부여
이 섹션에서는 응용 프로그램의 권한 부여 정책을 설정합니다. 사용자 또는 역할에 따라 응용 프로그램 리소스에 대한
액세스를 허용하거나 거부할 수 있습니다. 와일드카드 "*"는 모든 사용자를 의미하고 "?"는 인증되지 않은
익명의 사용자를 의미합니다.
-->
<authorization>
<allow users="*" /> <!-- 모든 사용자를 허용합니다. -->
<!-- <allow users="[쉼표로 구분된 사용자 목록]"
roles="[쉼표로 구분된 역할 목록]"/>
<deny users="[쉼표로 구분된 사용자 목록]"
roles="[쉼표로 구분된 역할 목록]"/>
-->
</authorization>
<!-- 응용 프로그램 수준 추적 로깅
응용 프로그램 수준 추적을 사용하면 응용 프로그램 내의 모든 페이지에 대한 추적 로그 출력이 가능합니다.
응용 프로그램 추적 로깅을 사용하려면 trace enabled="true"로 설정합니다. pageOutput="true"이면
각 페이지의 아래쪽에 추적 정보가 표시됩니다. 그렇지 않으면
웹 응용 프로그램 루트에서 "trace.axd" 페이지를 찾아서 응용 프로그램 추적 로그를
볼 수 있습니다.
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/>
<!-- 세션 상태 설정
기본적으로 ASP.NET에서는 쿠키를 사용하여 특정 세션에 속한 요청을 식별합니다.
쿠키를 사용할 수 없는 경우 세션 식별자를 URL에 추가하여 세션을 추적할 수 있습니다.
쿠키를 사용하지 않으려면 sessionState cookieless="true"로 설정합니다.
쿠키를 안쓴다면 브라우져 주소창을 보면 get방식으로 데이터를 주고받어..
근데, 거의 이렇게 쓸 일이 없다고 보면 되고..
-->
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
<!-- 전역화
이 섹션에서는 응용 프로그램의 전역화 설정을 설정합니다.
-->
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
</system.web>
</configuration>
[출처] ASP.NET에서의 Session 핸들링을 알아보자. |작성자 퍼니
'Programming > ASP.NET' 카테고리의 다른 글
[ASP.NET] html 파일 홈페이지에 넣기 (0) | 2010.08.09 |
---|---|
[ASP.NET] Web.Config 에 connectionStrings 설정하기 (0) | 2010.07.08 |
[ASP.NET] SqlDataReader Close 커넥션 같이 끊기 (0) | 2010.07.07 |
[스크랩] Javascript 로 UpdatePanel 핸들링 하기 (0) | 2010.06.10 |
[스크랩] 개인화주소 구현 (0) | 2010.06.07 |
[스크랩] 계층적 데이터 바인딩 (0) | 2010.05.13 |
[스크랩] 쿠키나 세션을 이용해서 조회수 중복 증가 방지 (0) | 2010.05.12 |
[스크랩] 이미지배경 투명처리 (0) | 2010.05.12 |
ASP.NET JavaScript 에서 C# 함수호출하기 - PageMethod (0) | 2010.05.11 |
[스크랩] 페이지 수명주기 단계 (0) | 2010.05.04 |