Bagikan melalui


HttpSessionState Kelas

Definisi

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>
            &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>

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 POSTForm 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 <object Runat="Server" Scope="Session"/> tag dalam file aplikasi ASP.NET Global.asax.

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.

Berlaku untuk

Lihat juga