Udostępnij za pośrednictwem


HttpSessionState Klasa

Definicja

Zapewnia dostęp do wartości stanu sesji, a także ustawień na poziomie sesji i metod zarządzania okresem istnienia.

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
Dziedziczenie
HttpSessionState
Implementuje

Przykłady

Poniższy przykład kodu ustawia i pobiera wartości ze stanu sesji.

Ważne

W tym przykładzie znajduje się pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web weryfikują, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Omówienie luk w zabezpieczeniach skryptów.

<%@ 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>

Uwagi

ASP.NET zapewnia zarządzanie stanem sesji, aby umożliwić przechowywanie informacji skojarzonych z unikatową sesją przeglądarki w wielu żądaniach. Możesz przechowywać kolekcję wartości, do których odwołuje się nazwa klucza lub indeks liczbowy. Dostęp do wartości sesji i funkcji jest dostępny przy użyciu HttpSessionState klasy, która jest dostępna za pośrednictwem Session właściwości bieżącej HttpContextlub Session właściwości Page.

Dane sesji są skojarzone z określoną sesją przeglądarki przy użyciu unikatowego identyfikatora. Domyślnie ten identyfikator jest przechowywany w pliku cookie sesji, który nie wygasa w przeglądarce, ale można również skonfigurować aplikację do przechowywania identyfikatora sesji w adresie URL, ustawiając cookieless atrybut na true lub UseUri w elemenie sessionState konfiguracji aplikacji. Możesz mieć ASP.NET określić, czy pliki cookie są obsługiwane przez przeglądarkę, określając wartość UseDeviceProfile atrybutu cookieless . Można również ASP.NET określić, czy pliki cookie są włączone dla przeglądarki, określając wartość AutoDetect atrybutu cookieless . Jeśli pliki cookie są obsługiwane po UseDeviceProfile określeniu lub włączone, AutoDetect identyfikator sesji będzie przechowywany w pliku cookie. W przeciwnym razie identyfikator sesji będzie przechowywany w adresie URL.

Sesje są uruchamiane podczas pierwszego żądania, a wartości sesji będą utrwalane tak długo, jak nowe żądanie jest wykonywane przez przeglądarkę przed liczbą minut określonych w przekazaniu Timeout właściwości. Po rozpoczęciu nowej sesji zostanie zgłoszone zdarzenie sesji Start . To zdarzenie umożliwia wykonanie dowolnej dodatkowej pracy na początku sesji, na przykład ustawienie domyślnych wartości sesji. Po przekroczeniu limitu czasu Abandon sesji wywoływana jest metoda lub aplikacja ASP.NET zostanie zamknięta, zostanie zgłoszone zdarzenie sesji End . To zdarzenie umożliwia wykonanie dowolnego niezbędnego czyszczenia. Zdarzenie End jest wywoływane tylko wtedy, gdy stan mode sesji ma wartość InProc.

Aby zwiększyć wydajność, sesje korzystające z plików cookie nie przydzielają magazynu sesji, dopóki dane nie będą rzeczywiście przechowywane w Session obiekcie. Aby uzyskać więcej informacji, zobacz SessionID właściwość .

Stan sesji nie jest utrwalany w granicach ASP.NET aplikacji. Jeśli przeglądarka przejdzie do innej aplikacji, informacje o sesji nie są dostępne dla nowej aplikacji.

Wartości sesji są domyślnie przechowywane w pamięci na serwerze sieci Web. Można również przechowywać wartości sesji w bazie danych programu SQL Server, serwerze stanu ASP.NET lub serwerze niestandardowym. Dzięki temu można zachować wartości sesji w przypadkach, gdy proces ASP.NET lub usług IIS lub ASP.NET aplikacja zostanie uruchomiona ponownie, a następnie udostępnić wartości sesji na wszystkich serwerach w farmie sieci Web. To zachowanie jest konfigurowane przez ustawienie atrybutu mode na prawidłową SessionStateMode wartość w elemecie sessionState konfiguracji aplikacji. Aby uzyskać więcej informacji, zobacz Tryby stanu sesji.

Alternatywy dla stanu sesji obejmują stan aplikacji (patrz Application właściwość) i pamięć podręczną ASP.NET (zobacz System.Web.Caching przestrzeń nazw), do których można przechowywać zmienne, do których można uzyskać dostęp przez wszystkich użytkowników aplikacji ASP.NET; profil ASP.NET (patrz System.Web.Profile przestrzeń nazw), który utrwala wartości użytkowników w magazynie danych bez wygasania ich przy użyciu limitu czasu; ASP.NET System.Web.UI.WebControls, które utrwalają wartości kontrolne w ViewStateelemecie ; CookiesQueryString właściwość i pola w formularzu HTML, które są dostępne w formularzu HTTPPOST. przy użyciu kolekcjiForm. Aby uzyskać więcej informacji na temat różnic między stanem sesji i innymi alternatywami zarządzania stanem, zobacz ASP.NET zalecenia dotyczące zarządzania stanem.

Właściwości

CodePage

Pobiera lub ustawia identyfikator zestawu znaków dla bieżącej sesji.

Contents

Pobiera odwołanie do bieżącego obiektu stanu sesji.

CookieMode

Pobiera wartość wskazującą, czy aplikacja jest skonfigurowana dla sesji bez plików cookie.

Count

Pobiera liczbę elementów w kolekcji stanu sesji.

IsCookieless

Pobiera wartość wskazującą, czy identyfikator sesji jest osadzony w adresie URL, czy przechowywany w pliku cookie HTTP.

IsNewSession

Pobiera wartość wskazującą, czy sesja została utworzona przy użyciu bieżącego żądania.

IsReadOnly

Pobiera wartość wskazującą, czy sesja jest tylko do odczytu.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do kolekcji wartości stanu sesji jest synchronizowany (bezpieczny wątkowo).

Item[Int32]

Pobiera lub ustawia wartość sesji według indeksu liczbowego.

Item[String]

Pobiera lub ustawia wartość sesji według nazwy.

Keys

Pobiera kolekcję kluczy dla wszystkich wartości przechowywanych w kolekcji stanu sesji.

LCID

Pobiera lub ustawia identyfikator ustawień regionalnych (LCID) bieżącej sesji.

Mode

Pobiera bieżący tryb stanu sesji.

SessionID

Pobiera unikatowy identyfikator sesji.

StaticObjects

Pobiera kolekcję obiektów zadeklarowanych przez <object Runat="Server" Scope="Session"/> tagi w pliku aplikacji ASP.NET Global.asax.

SyncRoot

Pobiera obiekt, który może służyć do synchronizowania dostępu do kolekcji wartości stanu sesji.

Timeout

Pobiera lub ustawia czas dozwolony w minutach między żądaniami, zanim dostawca stanu sesji zakończy sesję.

Metody

Abandon()

Anuluje bieżącą sesję.

Add(String, Object)

Dodaje nowy element do kolekcji stanu sesji.

Clear()

Usuwa wszystkie klucze i wartości z kolekcji stanu sesji.

CopyTo(Array, Int32)

Kopiuje kolekcję wartości stanu sesji do tablicy jednowymiarowej, zaczynając od określonego indeksu w tablicy.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetEnumerator()

Zwraca moduł wyliczający, który może służyć do odczytywania wszystkich nazw zmiennych stanu sesji w bieżącej sesji.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
Remove(String)

Usuwa element z kolekcji stanu sesji.

RemoveAll()

Usuwa wszystkie klucze i wartości z kolekcji stanu sesji.

RemoveAt(Int32)

Usuwa element w określonym indeksie z kolekcji stanu sesji.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy elementu IEnumerable do określonego typu.

OfType<TResult>(IEnumerable)

Filtruje elementy elementu IEnumerable na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy

Zobacz też