HttpSessionState 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
세션 수준 설정 및 수명 관리 메서드뿐만 아니라 세션 상태 값에 대한 액세스를 제공합니다.
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>
</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>
</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>
</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>
</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 로 설정 cookieless
true
하여 URL에 세션 식별자를 저장하도록 애플리케이션을 구성할 수도 있습니다. ASP.NET 특성에 대한 cookieless
값을 UseDeviceProfile 지정하여 브라우저에서 쿠키를 지원하는지 여부를 확인할 수 있습니다. 또한 특성에 대한 값을 AutoDetectcookieless
지정하여 브라우저에 쿠키를 사용할 수 있는지 여부를 ASP.NET 확인할 수도 있습니다. 가 지정될 때 UseDeviceProfile 쿠키가 지원되거나 AutoDetect 가 지정되면 세션 식별자가 쿠키에 저장되고, 그렇지 않으면 세션 식별자가 URL에 저장됩니다.
세션은 첫 번째 요청 중에 시작되며, 속성 패스에 지정된 시간(분) 전에 브라우저에서 새 요청을 수행하는 한 세션 값이 Timeout 유지됩니다. 새 세션이 시작되면 세션 Start 이벤트가 발생합니다. 이 이벤트를 사용하여 세션 시작 시 기본 세션 값 설정과 같은 추가 작업을 수행할 수 있습니다. 세션 시간이 종료 될 때 합니다 Abandon 메서드를 호출 하거나 ASP.NET 애플리케이션 종료 될 세션 End 이벤트가 발생 합니다. 이 이벤트를 사용하여 필요한 정리를 수행할 수 있습니다. 이벤트는 End 세션 상태가 mode
로 설정된 경우에만 발생합니다 InProc.
성능을 향상시키기 위해 쿠키를 사용하는 세션은 데이터가 Session 개체에 실제로 저장될 때까지 세션 스토리지를 할당하지 않습니다. 자세한 내용은 SessionID 속성을 참조하세요.
ASP.NET 애플리케이션 간에 세션 상태 유지 되지 않습니다. 브라우저를 다른 애플리케이션을 탐색 하는 경우 세션 정보를 사용할 수 없는 경우 새 애플리케이션
세션 값은 기본적으로 웹 서버의 메모리에 저장됩니다. SQL Server 데이터베이스, ASP.NET 상태 서버 또는 사용자 지정 서버에 세션 값을 저장할 수도 있습니다. 이렇게 하면 ASP.NET 또는 IIS 프로세스나 ASP.NET 애플리케이션 다시 시작 하는 경우에서 세션 값을 유지 하 고 웹 팜의 모든 서버에서 세션 값을 사용할 수 있도록 합니다. 이 동작은 특성을 애플리케이션 구성의 mode
sessionState 요소에서 유효한 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에서 |
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) |
IEnumerable을 IQueryable로 변환합니다. |
적용 대상
추가 정보
.NET