수색…


통사론

  • 세션 [ "Session_Key"] = Obj_Value;

비고

HTTP는 상태 비 저장입니다. ASP.NET 세션 상태는 HTTP 페이지 요청 간의 상태 유지를 용이하게 해주는 프레임 워크입니다.

세션은 포스트 백 (post-back) 및 다른 페이지에서 사용할 수있는 클래스 수준 변수와 다릅니다. 예를 들어 Page1.aspx에서 생성 된 세션 변수는 같은 응용 프로그램 내에서 나중에 Page2.aspx로 리디렉션 된 경우 사용할 수 있습니다.

또한 페이지 수준에서 선언 된 정적 변수와 달리 세션 변수는 서로 다른 사용자에 대해 독립적입니다. 즉, 한 사용자의 세션 변수 값을 변경해도 다른 사용자의 동일한 변수 값에는 영향을 미치지 않습니다.

ViewState 는 사용자의 데이터를 일시적으로 저장하는 데 사용할 수 있지만 여러 페이지에 데이터를 저장할 수는 없습니다. 또한 viewstate 는 페이지의 일부로 클라이언트에 전송됩니다. 결과적으로 사용자와 관련된 중요한 정보는 ViewState 저장 될 수 없으며 세션 변수가 유용 해집니다.

Session 객체를 사용하여 값 저장

System.Web.SessionState.HttpSessionState 개체는 HTTP 요청간에 값을 유지하는 방법을 제공합니다. 아래 예에서 경고에 대한 사용자 기본 설정이 세션에 저장됩니다. 나중에 사용자에게 다른 요청을 제공하는 동안 응용 프로그램은 세션에서이 기본 설정을 읽고 경고를 숨길 수 있습니다.

public partial class Default : System.Web.UI.Page
{
    public void LoadPreferences(object sender, EventArgs args)
    {
        // ... 
        // ... A DB operation that loads the user's preferences.
        // ...

        // Store a value with the key showWarnings
        HttpContext.Current.Session["showWarnings"] = false;
    }

    public void button2Clicked(object sender, EventArgs args)
    {
        // While processing another request, access this value.
        bool showWarnings = (bool)HttpContext.Current.Session["showWarnings"];
        lblWarnings.Visible = false;
    }
}    

세션 변수는 쿠키와 마찬가지로 모든 사용자에게 공통적이지 않으며 여러 포스트 백에 걸쳐 유지됩니다.

세션은 사용자 세션에 대한 식별자가 포함 된 쿠키를 설정하여 작동합니다. 기본적으로이 식별자는 웹 서버 메모리에 저장된 값과 함께 웹 서버 메모리에 저장됩니다.

다음은 세션을 추적하기 위해 사용자의 브라우저에 설정된 쿠키의 스크린 샷입니다.

sessionStateCookie

SQL 세션 저장소 사용

세션 상태를 공유해야하는 여러 서버가있는 경우 ASP.NET 프로세스 메모리에 저장하면 작동하지 않습니다. 예를 들어 라운드 로빈 방식으로 요청을 분산하는 부하 분산 장치를 사용하여 웹 팜 환경에 배포 할 수 있습니다. 이 환경에서는 단일 사용자의 요청이 여러 서버에서 제공 될 수 있습니다.

web.config 파일에서 SQL 서버 세션 저장소를 구성 할 수 있습니다.

<configuration>
  <system.web>
    <sessionState 
      mode="SQLServer"
      sqlConnectionString="Data Source=localhost;Integrated Security=SSPI"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

SQL 스키마를 작성하려면 aspnet_regsql 도구를 사용하십시오. [SampleSqlServerName]은 SQL Server의 호스트 이름입니다. -ssadd는 세션 상태 데이터베이스를 만들도록 도구에 지시합니다. -sstype p는 도구에 기본 이름 ASPState로 새 데이터베이스를 작성하라고 지시합니다.

aspnet_regsql.exe -S [SampleSqlServerName] -U [Username] -P [Password] -ssadd -sstype p

Amazon DynamoDB 세션 저장소 사용

SQL 서버를 사용하지 않으려면 Amazon의 호스팅 된 Dynamo DB nosql 데이터베이스를 세션 저장소로 사용할 수 있습니다.

AWS SDK가 필요합니다. Visual Studio nuget 패키지 관리자 콘솔에서 설치하려면 다음 명령을 사용하십시오

Install-Package AWSSDK 

그런 다음 사용자 정의 공급자를 사용하도록 sessionState 공급자를 구성 할 수 있습니다. 프로파일 및 IAM 액세스 및 비밀 키 조합 중 하나 인 region 및 신임장을 지정해야합니다. 기본적으로 ASP.NET_SessionState라는 테이블이 만들어집니다.

<configuration>
  <system.web>
    <sessionState
      timeout="20"
      mode="Custom"
      customProvider="DynamoDBSessionStoreProvider">
      <providers>
        <add name="DynamoDBSessionStoreProvider"
             type="Amazon.SessionProvider.DynamoDBSessionStateStore"
             AWSProfileName="[PROFILE]"
             Region="[REGION]"
             CreateIfNotExist="true"
             />
      </providers>
    </sessionState>
  </system.web>
</configuration>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow