HttpSessionState Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan akses ke nilai status sesi serta pengaturan tingkat sesi dan metode manajemen seumur hidup.
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
- Warisan
-
HttpSessionState
- Penerapan
Contoh
Contoh kode berikut mengatur dan mengambil nilai dari status sesi.
Penting
Contoh ini memiliki kotak teks yang menerima input pengguna, yang merupakan potensi ancaman keamanan. Secara default, ASP.NET halaman Web memvalidasi bahwa input pengguna tidak menyertakan elemen skrip atau HTML. Untuk informasi selengkapnya, lihat Gambaran Umum Eksploitasi Skrip.
<%@ 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>
Keterangan
ASP.NET menyediakan manajemen status sesi untuk memungkinkan Anda menyimpan informasi yang terkait dengan sesi browser unik di beberapa permintaan. Anda dapat menyimpan kumpulan nilai yang dirujuk oleh nama kunci atau menurut indeks numerik. Akses ke nilai sesi dan fungsionalitas tersedia menggunakan HttpSessionState kelas , yang dapat diakses melalui Session properti saat ini HttpContext, atau Session properti dari Page.
Data sesi dikaitkan dengan sesi browser tertentu menggunakan pengidentifikasi unik. Secara default, pengidentifikasi ini disimpan dalam cookie sesi yang tidak kedaluwarsa di browser, tetapi Anda juga dapat mengonfigurasi aplikasi Anda untuk menyimpan pengidentifikasi sesi di URL dengan mengatur cookieless
atribut ke true
atau UseUri di elemen sessionState dari konfigurasi aplikasi Anda. Anda dapat memiliki ASP.NET menentukan apakah cookie didukung oleh browser dengan menentukan nilai UseDeviceProfile untuk cookieless
atribut . Anda juga dapat memiliki ASP.NET menentukan apakah cookie diaktifkan untuk browser dengan menentukan nilai AutoDetect untuk cookieless
atribut . Jika cookie didukung ketika UseDeviceProfile ditentukan, atau diaktifkan ketika AutoDetect ditentukan, maka pengidentifikasi sesi akan disimpan dalam cookie; jika tidak, pengidentifikasi sesi akan disimpan di URL.
Sesi dimulai selama permintaan pertama dan nilai sesi akan bertahan selama permintaan baru dibuat oleh browser sebelum jumlah menit yang ditentukan dalam Timeout pass properti. Saat sesi baru dimulai, peristiwa sesi Start dinaikkan. Anda dapat menggunakan kejadian ini untuk melakukan pekerjaan tambahan apa pun di awal sesi, seperti mengatur nilai sesi default. Ketika sesi habis, Abandon metode dipanggil, atau aplikasi ASP.NET dimatikan, peristiwa sesi End dinaikkan. Anda dapat menggunakan kejadian ini untuk melakukan pembersihan yang diperlukan. Peristiwa End dinaikkan hanya ketika status mode
sesi diatur ke InProc.
Untuk meningkatkan performa, sesi yang menggunakan cookie tidak mengalokasikan penyimpanan sesi hingga data benar-benar disimpan dalam Session objek . Untuk informasi selengkapnya, lihat SessionID properti.
Status sesi tidak bertahan di seluruh batas aplikasi ASP.NET. Jika browser menavigasi ke aplikasi lain, informasi sesi tidak tersedia untuk aplikasi baru.
Nilai sesi disimpan dalam memori di server Web, secara default. Anda juga dapat menyimpan nilai sesi dalam database SQL Server, server status ASP.NET, atau server kustom. Ini memungkinkan Anda untuk mempertahankan nilai sesi dalam kasus di mana proses ASP.NET atau IIS atau aplikasi ASP.NET dimulai ulang dan untuk membuat nilai sesi tersedia di semua server di farm Web. Perilaku ini dikonfigurasi dengan mengatur mode
atribut ke nilai yang valid SessionStateMode dalam elemen sessionState dari konfigurasi aplikasi Anda. Untuk informasi selengkapnya, lihat Mode Status Sesi.
Alternatif untuk status sesi termasuk status aplikasi (lihat Application properti) dan cache ASP.NET (lihat System.Web.Caching namespace), yang menyimpan variabel yang dapat diakses oleh semua pengguna aplikasi ASP.NET; profil ASP.NET (lihat System.Web.Profile namespace), yang mempertahankan nilai pengguna di penyimpanan data tanpa kedaluwarsa menggunakan waktu habis; ASP.NET System.Web.UI.WebControls, yang mempertahankan nilai kontrol di ViewState; Cookies; QueryString properti; dan bidang pada formulir HTML yang tersedia dari HTTP POST
Form menggunakan koleksi. Untuk detail selengkapnya tentang perbedaan antara status sesi dan alternatif manajemen status lainnya, lihat Rekomendasi Manajemen Status ASP.NET.
Properti
CodePage |
Mendapatkan atau mengatur pengidentifikasi set karakter untuk sesi saat ini. |
Contents |
Mendapatkan referensi ke objek keadaan sesi saat ini. |
CookieMode |
Mendapatkan nilai yang menunjukkan apakah aplikasi dikonfigurasi untuk sesi tanpa cookie. |
Count |
Mendapatkan jumlah item dalam koleksi status sesi. |
IsCookieless |
Mendapatkan nilai yang menunjukkan apakah ID sesi disematkan di URL atau disimpan dalam cookie HTTP. |
IsNewSession |
Mendapatkan nilai yang menunjukkan apakah sesi dibuat dengan permintaan saat ini. |
IsReadOnly |
Mendapatkan nilai yang menunjukkan apakah sesi bersifat baca-saja. |
IsSynchronized |
Mendapatkan nilai yang menunjukkan apakah akses ke pengumpulan nilai status sesi disinkronkan (utas aman). |
Item[Int32] |
Mendapatkan atau menetapkan nilai sesi menurut indeks numerik. |
Item[String] |
Mendapatkan atau menetapkan nilai sesi berdasarkan nama. |
Keys |
Mendapatkan kumpulan kunci untuk semua nilai yang disimpan dalam koleksi status sesi. |
LCID |
Mendapatkan atau mengatur pengidentifikasi lokal (LCID) dari sesi saat ini. |
Mode |
Mendapatkan mode keadaan sesi saat ini. |
SessionID |
Mendapatkan pengidentifikasi unik untuk sesi tersebut. |
StaticObjects |
Mendapatkan kumpulan objek yang dideklarasikan oleh |
SyncRoot |
Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke kumpulan nilai status sesi. |
Timeout |
Mendapatkan atau mengatur jumlah waktu, dalam hitungan menit, yang diizinkan di antara permintaan sebelum penyedia keadaan sesi mengakhiri sesi. |
Metode
Abandon() |
Membatalkan sesi saat ini. |
Add(String, Object) |
Menambahkan item baru ke kumpulan status sesi. |
Clear() |
Menghapus semua kunci dan nilai dari kumpulan status sesi. |
CopyTo(Array, Int32) |
Menyalin kumpulan nilai status sesi ke array satu dimensi, dimulai dari indeks yang ditentukan dalam array. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetEnumerator() |
Mengembalikan enumerator yang dapat digunakan untuk membaca semua nama variabel status sesi dalam sesi saat ini. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
Remove(String) |
Menghapus item dari kumpulan status sesi. |
RemoveAll() |
Menghapus semua kunci dan nilai dari kumpulan status sesi. |
RemoveAt(Int32) |
Menghapus item pada indeks tertentu dari kumpulan status sesi. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Metode Ekstensi
Cast<TResult>(IEnumerable) |
Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan. |
OfType<TResult>(IEnumerable) |
Memfilter elemen berdasarkan IEnumerable jenis tertentu. |
AsParallel(IEnumerable) |
Mengaktifkan paralelisasi kueri. |
AsQueryable(IEnumerable) |
Mengonversi menjadi IEnumerableIQueryable. |