■ 간단한 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>

+ Recent posts