HttpSessionState 클래스

정의

세션 수준 설정 및 수명 관리 메서드뿐만 아니라 세션 상태 값에 대한 액세스를 제공합니다.

public ref class HttpSessionState sealed : System::Collections::ICollection
public sealed class HttpSessionState : System.Collections.ICollection
type HttpSessionState = class
    interface ICollection
    interface IEnumerable
Public NotInheritable Class HttpSessionState
Implements ICollection
상속
HttpSessionState
구현

예제

다음 코드 예제에서는 세션 상태에서 값을 설정하고 검색합니다.

중요

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다. 자세한 내용은 Script Exploits Overview를 참조하세요.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  public void Page_Load(object sender, EventArgs args)
  {
    if (!IsPostBack)
    {
      if (Session["address"] == null)
      {
        enterUserInfoPanel.Visible = true;
        userInfoPanel.Visible = false;
      }
      else
      {
        enterUserInfoPanel.Visible = false;
        userInfoPanel.Visible = true;

        SetLabels();
      }
    }
  }

  protected void SetLabels()
  {
    firstNameLabel.Text = Session["firstName"].ToString();
    lastNameLabel.Text = Session["lastName"].ToString();
    addressLabel.Text = Session["address"].ToString();
    cityLabel.Text = Session["city"].ToString();
    stateOrProvinceLabel.Text = Session["stateOrProvince"].ToString();
    zipCodeLabel.Text = Session["zipCode"].ToString();
    countryLabel.Text = Session["country"].ToString();
  }

  protected void EnterInfoButton_OnClick(object sender, EventArgs e)
  {
    Session["firstName"] = Server.HtmlEncode(firstNameTextBox.Text);
    Session["lastName"] = Server.HtmlEncode(lastNameTextBox.Text);
    Session["address"] = Server.HtmlEncode(addressTextBox.Text);
    Session["city"] = Server.HtmlEncode(cityTextBox.Text);
    Session["stateOrProvince"] = Server.HtmlEncode(stateOrProvinceTextBox.Text);
    Session["zipCode"] = Server.HtmlEncode(zipCodeTextBox.Text);
    Session["country"] = Server.HtmlEncode(countryTextBox.Text);

    enterUserInfoPanel.Visible = false;
    userInfoPanel.Visible = true;

    SetLabels();
  }

  protected void ChangeInfoButton_OnClick(object sender, EventArgs args)
  {
    enterUserInfoPanel.Visible = true;
    userInfoPanel.Visible = true;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <title>User Information</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      User information</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
    <asp:Panel ID="enterUserInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            First name:</td>
          <td>
            <asp:TextBox ID="firstNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Last name:</td>
          <td>
            <asp:TextBox ID="lastNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Address:</td>
          <td>
            <asp:TextBox ID="addressTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            City:</td>
          <td>
            <asp:TextBox ID="cityTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            State or Province:</td>
          <td>
            <asp:TextBox ID="stateOrProvinceTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Zip Code/Postal Code:</td>
          <td>
            <asp:TextBox ID="zipCodeTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Country:</td>
          <td>
            <asp:TextBox ID="countryTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="enterInfoButton" runat="server" Text="Enter user information" OnClick="EnterInfoButton_OnClick" /></td>
        </tr>
      </table>
    </asp:Panel>
    <asp:Panel ID="userInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            Name:</td>
          <td>
            <asp:Label ID="firstNameLabel" runat="server" />
            <asp:Label ID="lastNameLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            address:</td>
          <td>
            <asp:Label ID="addressLabel" runat="server" /><br />
            <asp:Label ID="cityLabel" runat="server" />,
            <asp:Label ID="stateOrProvinceLabel" runat="server" />
            <asp:Label ID="zipCodeLabel" runat="server" /><br />
            <asp:Label ID="countryLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="changeInfoButton" runat="server" Text="Change user information" OnClick="ChangeInfoButton_OnClick" /></td>
        </tr>
      </table>
    </asp:Panel>
  </form>
</body>
</html>

<%@ Page Language="VB" %>

<%@ Import Namespace="System.Collections" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  Public Sub Page_Load(ByVal sender As Object, ByVal args As EventArgs)
    If Not IsPostBack Then
      If Session("Address") Is Nothing Then
        EnterUserInfoPanel.Visible = True
        UserInfoPanel.Visible = False
      Else
        EnterUserInfoPanel.Visible = False
        UserInfoPanel.Visible = True
        
        SetLabels()
      End If
    End If
  End Sub
  
  Protected Sub SetLabels()
    FirstNameLabel.Text = Session("FirstName").ToString()
    LastNameLabel.Text = Session("LastName").ToString()
    AddressLabel.Text = Session("Address").ToString()
    CityLabel.Text = Session("City").ToString()
    StateOrProvinceLabel.Text = Session("StateOrProvince").ToString()
    ZipCodeLabel.Text = Session("ZipCode").ToString()
    CountryLabel.Text = Session("Country").ToString()
  End Sub
  
  Protected Sub EnterInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    Session("FirstName") = Server.HtmlEncode(FirstNameTextBox.Text)
    Session("LastName") = Server.HtmlEncode(LastNameTextBox.Text)
    Session("Address") = Server.HtmlEncode(AddressTextBox.Text)
    Session("City") = Server.HtmlEncode(CityTextBox.Text)
    Session("StateOrProvince") = Server.HtmlEncode(StateOrProvinceTextBox.Text)
    Session("ZipCode") = Server.HtmlEncode(ZipCodeTextBox.Text)
    Session("Country") = Server.HtmlEncode(CountryTextBox.Text)
    
    EnterUserInfoPanel.Visible = False
    UserInfoPanel.Visible = True
    
    SetLabels()
  End Sub
  
  Protected Sub ChangeInfoButton_OnClick(ByVal sender As Object, ByVal args As EventArgs)
    EnterUserInfoPanel.Visible = True
    UserInfoPanel.Visible = False
  End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <title>User Information</title>
</head>
<body>
  <form id="form1" runat="server">
    <h3>
      User information</h3>
    <asp:Label ID="Msg" ForeColor="maroon" runat="server" /><br />
    <asp:Panel ID="EnterUserInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            First name:</td>
          <td>
            <asp:TextBox ID="FirstNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Last name:</td>
          <td>
            <asp:TextBox ID="LastNameTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Address:</td>
          <td>
            <asp:TextBox ID="AddressTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            City:</td>
          <td>
            <asp:TextBox ID="CityTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            State or Province:</td>
          <td>
            <asp:TextBox ID="StateOrProvinceTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Zip Code/Postal Code:</td>
          <td>
            <asp:TextBox ID="ZipCodeTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            Country:</td>
          <td>
            <asp:TextBox ID="CountryTextBox" runat="server" /></td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="EnterInfoButton" runat="server" Text="Enter user information" OnClick="EnterInfoButton_OnClick" /></td>
        </tr>
      </table>
    </asp:Panel>
    <asp:Panel ID="UserInfoPanel" runat="server">
      <table cellpadding="3" border="0">
        <tr>
          <td>
            Name:</td>
          <td>
            <asp:Label ID="FirstNameLabel" runat="server" />
            <asp:Label ID="LastNameLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td valign="top">
            Address:</td>
          <td>
            <asp:Label ID="AddressLabel" runat="server" /><br />
            <asp:Label ID="CityLabel" runat="server" />,
            <asp:Label ID="StateOrProvinceLabel" runat="server" />
            <asp:Label ID="ZipCodeLabel" runat="server" /><br />
            <asp:Label ID="CountryLabel" runat="server" />
          </td>
        </tr>
        <tr>
          <td>
            &nbsp;</td>
          <td>
            <asp:Button ID="ChangeInfoButton" runat="server" Text="Change user information" OnClick="ChangeInfoButton_OnClick" /></td>
        </tr>
      </table>
    </asp:Panel>
  </form>
</body>
</html>

설명

ASP.NET 세션 상태 관리를 고유한 브라우저 세션을 여러 개의 요청 전반에 연관 된 정보를 저장할 수 있도록 제공 합니다. 숫자 인덱스 또는 키 이름으로 참조 하는 값의 컬렉션을 저장할 수 있습니다. 세션 값 및 기능에 대한 액세스는 현재 HttpContext의 속성 또는 의 속성을 통해 Session 액세스할 수 있는 클래스를 SessionPage사용하여 HttpSessionState 사용할 수 있습니다.

세션 데이터는 고유 식별자를 사용하여 특정 브라우저 세션과 연결됩니다. 기본적으로 이 식별자는 브라우저의 만료되지 않는 세션 쿠키에 저장되지만 특성을 애플리케이션 구성의 sessionState 요소 또는 UseUri 로 설정 cookielesstrue 하여 URL에 세션 식별자를 저장하도록 애플리케이션을 구성할 수도 있습니다. ASP.NET 특성에 대한 cookieless 값을 UseDeviceProfile 지정하여 브라우저에서 쿠키를 지원하는지 여부를 확인할 수 있습니다. 특성에 대한 값을 AutoDetectcookieless 지정하여 브라우저에 쿠키를 사용할 수 있는지 여부를 ASP.NET 확인할 수도 있습니다. 가 지정된 경우 쿠키가 지원되거나 가 지정될 때 UseDeviceProfileAutoDetect 사용하도록 설정되면 세션 식별자가 쿠키에 저장되고, 그렇지 않으면 세션 식별자가 URL에 저장됩니다.

세션은 첫 번째 요청 중에 시작되며 속성 패스에 지정된 시간(분) 전에 브라우저에서 새 요청을 수행하는 한 세션 값이 Timeout 유지됩니다. 새 세션이 시작되면 세션 Start 이벤트가 발생합니다. 이 이벤트를 사용하여 세션 시작 시 기본 세션 값 설정과 같은 추가 작업을 수행할 수 있습니다. 세션 시간이 종료 될 때 합니다 Abandon 메서드를 호출 하거나 ASP.NET 애플리케이션 종료 될 세션 End 이벤트가 발생 합니다. 이 이벤트를 사용하여 필요한 정리를 수행할 수 있습니다. 이벤트는 End 세션 상태가 mode 로 설정된 경우에만 발생합니다 InProc.

성능을 향상시키기 위해 쿠키를 사용하는 세션은 데이터가 Session 개체에 실제로 저장될 때까지 세션 스토리지를 할당하지 않습니다. 자세한 내용은 SessionID 속성을 참조하세요.

ASP.NET 애플리케이션 간에 세션 상태 유지 되지 않습니다. 브라우저를 다른 애플리케이션을 탐색 하는 경우 세션 정보를 사용할 수 없는 경우 새 애플리케이션

세션 값은 기본적으로 웹 서버의 메모리에 저장됩니다. SQL Server 데이터베이스, ASP.NET 상태 서버 또는 사용자 지정 서버에 세션 값을 저장할 수도 있습니다. 이렇게 하면 ASP.NET 또는 IIS 프로세스나 ASP.NET 애플리케이션 다시 시작 하는 경우에서 세션 값을 유지 하 고 웹 팜의 모든 서버에서 세션 값을 사용할 수 있도록 합니다. 이 동작은 특성을 애플리케이션 구성의 modesessionState 요소에서 유효한 SessionStateMode 값으로 설정하여 구성됩니다. 자세한 내용은 세션 상태 모드를 참조하세요.

애플리케이션 상태를 포함 하는 세션 상태에 대 한 대안 (참조를 Application 속성) 및 ASP.NET cache (참조는 System.Web.Caching 네임 스페이스), ASP.NET 애플리케이션의 모든 사용자가 액세스할 수 있는 저장소 변수; ASP.NET 프로필 (참조는 System.Web.Profile 네임 스페이스), 만료 되지 않고 데이터 저장소의 사용자 값을 유지 하는 시간 제한이;를 사용 하 여 ASP.NET System.Web.UI.WebControls, 컨트롤 값에는 유지 된 ViewState; Cookies; QueryString 속성 및 HTTP에서 사용할 수 있는 HTML 폼 필드 POST 사용 하 여는 Form 컬렉션입니다. 세션 상태와 기타 상태 관리 대안 간의 차이점에 대한 자세한 내용은 ASP.NET 상태 관리 권장 사항을 참조하세요.

속성

CodePage

현재 세션에 대한 문자 집합 식별자를 가져오거나 설정합니다.

Contents

현재 세션 상태 개체에 대한 참조를 가져옵니다.

CookieMode

애플리케이션에서 쿠키 없는 세션을 구성할지 여부를 나타내는 값을 가져옵니다.

Count

세션 상태 컬렉션의 항목 수를 가져옵니다.

IsCookieless

세션 ID가 URL에 포함되어 있는지 HTTP 쿠키에 저장되어 있는지 여부를 나타내는 값을 가져옵니다.

IsNewSession

세션을 현재 요청으로 만들었는지 여부를 나타내는 값을 가져옵니다.

IsReadOnly

세션이 읽기 전용인지 여부를 나타내는 값을 가져옵니다.

IsSynchronized

세션 상태 값의 컬렉션에 대한 액세스가 동기화(스레드로부터 안전)되는지 여부를 나타내는 값을 가져옵니다.

Item[Int32]

숫자 인덱스별로 세션 값을 가져오거나 설정합니다.

Item[String]

이름별로 세션 값을 가져오거나 설정합니다.

Keys

세션 상태 컬렉션에 저장된 모든 값의 키 컬렉션을 가져옵니다.

LCID

현재 세션의 LCID(로캘 식별자)를 가져오거나 설정합니다.

Mode

현재 세션 상태 모드를 가져옵니다.

SessionID

세션의 고유 식별자를 가져옵니다.

StaticObjects

ASP.NET 애플리케이션 파일 Global.asax에서 <object Runat="Server" Scope="Session"/> 태그로 선언된 개체 컬렉션을 가져옵니다.

SyncRoot

세션 상태 값의 컬렉션에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져옵니다.

Timeout

세션 상태 공급자가 세션을 종료하기 전에 요청 사이에 허용되는 시간(분)을 가져오거나 설정합니다.

메서드

Abandon()

현재 세션을 취소합니다.

Add(String, Object)

세션 상태 컬렉션에 새 항목을 추가합니다.

Clear()

세션 상태 컬렉션에서 모든 키와 값을 제거합니다.

CopyTo(Array, Int32)

배열의 지정된 인덱스에서 시작하여 1차원 배열에 세션 상태 값 컬렉션을 복사합니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetEnumerator()

현재 세션에서 모든 세션 상태 변수 이름을 읽는 데 사용할 수 있는 열거자를 반환합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
Remove(String)

세션 상태 컬렉션에서 항목을 삭제합니다.

RemoveAll()

세션 상태 컬렉션에서 모든 키와 값을 제거합니다.

RemoveAt(Int32)

세션 상태 컬렉션에서 지정된 인덱스의 항목을 삭제합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

확장 메서드

Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.

적용 대상

추가 정보