HttpSessionState Klasa

Definicja

Zapewnia dostęp do wartości stanu sesji oraz ustawień poziomu sesji oraz metod zarządzania okresem istnienia.Provides access to session-state values as well as session-level settings and lifetime management methods.

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 z stanu sesji.The following code example sets and retrieves values from session state.

Ważne

Ten przykład zawiera pole tekstowe akceptujące dane wejściowe użytkownika, które jest potencjalnym zagrożeniem bezpieczeństwa.This example has a text box that accepts user input, which is a potential security threat. Domyślnie strony sieci Web ASP.NET sprawdzają, czy dane wejściowe użytkownika nie obejmują elementów skryptu ani HTML.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Aby uzyskać więcej informacji, zobacz Omówienie lukw zabezpieczeniach.For more information, see 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>

Uwagi

ASP.NET zapewnia zarządzanie stanem sesji w celu umożliwienia przechowywania informacji skojarzonych z unikatową sesją przeglądarki w wielu żądaniach.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. Można przechowywać kolekcję wartości, do których odwołuje się nazwa klucza lub indeks liczbowy.You can store a collection of values referenced by a key name or by numerical index. Dostęp do wartości i funkcjonalności sesji jest dostępny za pomocą HttpSessionState klasy, która jest dostępna Session za pośrednictwem właściwości Current HttpContextlub Session Property Pageobiektu.Access to session values and functionality is available using the HttpSessionState class, which is accessible through the Session property of the current HttpContext, or the Session property of the Page.

Dane sesji są skojarzone z określoną sesją przeglądarki przy użyciu unikatowego identyfikatora.Session data is associated with a specific browser session using a unique identifier. Domyślnie ten identyfikator jest przechowywany w pliku cookie sesji, który nie wygasa, ale można również skonfigurować aplikację do przechowywania identyfikatora sesji w adresie URL przez ustawienie cookieless atrybutu na true lub UseUri w sessionState element konfiguracji aplikacji.By default, this identifier is stored in a non-expiring session cookie in the browser, but you can also configure your application to store the session identifier in the URL by setting the cookieless attribute to true or UseUri in the sessionState element of your application configuration. Można ASP.NET określić, czy pliki cookie są obsługiwane przez przeglądarkę, określając wartość UseDeviceProfile cookieless dla atrybutu.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. Możesz również mieć ASP.NET, aby określić, czy pliki cookie są włączone dla przeglądarki, określając wartość AutoDetect cookieless dla atrybutu.You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Jeśli pliki cookie są obsługiwane UseDeviceProfile , gdy jest określony lub włączony AutoDetect , gdy jest określony, identyfikator sesji będzie przechowywany w pliku cookie; w przeciwnym razie identyfikator sesji będzie przechowywany w adresie URL.If cookies are supported when UseDeviceProfile is specified, or enabled when AutoDetect is specified, then the session identifier will be stored in a cookie; otherwise the session identifier will be stored in the URL.

Sesje są uruchamiane podczas pierwszego żądania, a wartości sesji będą zachowywane, o ile przez przeglądarkę zostanie wysłane nowe żądanie przed upływem liczby minut określonych we Timeout właściwości.Sessions are started during the first request and session values will persist as long as a new request is made by the browser before the number of minutes specified in the Timeout property pass. Po rozpoczęciu nowej sesji zostanie zgłoszone zdarzenie sesji Start .When a new session begins, the session Start event is raised. To zdarzenie służy do wykonywania dowolnej dodatkowej pracy na początku sesji, na przykład ustawiania domyślnych wartości sesji.You can use this event to perform any additional work at the start of a session, such as setting default session values. Po przekroczeniu limitu Abandon czasu sesji wywoływana jest metoda, a aplikacja ASP.NET jest wyłączana End .When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. To zdarzenie służy do wykonywania niezbędnych czynności czyszczących.You can use this event to perform any necessary cleanup. Zdarzenie jest zgłaszane tylko wtedy, gdy stan mode sesji jest ustawiony na InProc. EndThe End event is raised only when the session state mode is set to InProc.

Aby zwiększyć wydajność, sesje używające plików cookie nie przydzielają magazynu sesji do momentu, gdy dane Session nie są faktycznie przechowywane w obiekcie.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Aby uzyskać więcej informacji, zobacz SessionID właściwość.For more information, see the SessionID property.

Stan sesji nie utrzymuje się w granicach aplikacji ASP.NET.Session state does not persist across ASP.NET application boundaries. Jeśli przeglądarka nawiguje do innej aplikacji, informacje o sesji nie są dostępne dla nowej aplikacji.If a browser navigates to another application, the session information is not available to the new application.

Wartości sesji są domyślnie przechowywane w pamięci na serwerze sieci Web.Session values are stored in memory on the Web server, by default. Możesz również przechowywać wartości sesji w bazie danych SQL Server, serwerze stanu ASP.NET lub serwerze niestandardowym.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. Dzięki temu można zachować wartości sesji w przypadkach, gdy proces ASP.NET lub IIS lub aplikacja ASP.NET zostanie uruchomiona ponownie i w celu udostępnienia wartości sesji na wszystkich serwerach w kolektywie serwerów sieci Web.This enables you to preserve session values in cases where the ASP.NET or IIS process or the ASP.NET application restarts and to make session values available across all the servers in a Web farm. To zachowanie jest konfigurowane przez ustawienie mode atrybutu na prawidłową SessionStateMode wartość w elemencie sessionState w konfiguracji aplikacji.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Aby uzyskać więcej informacji, zobacz tryby stanu sesji.For more information, see Session-State Modes.

Alternatywy dla stanu sesji obejmują stan aplikacji (zobacz Application Właściwość) i pamięć podręczną ASP.NET ( System.Web.Caching Zobacz Przestrzeń nazw), w której są przechowywane zmienne, do których mogą uzyskiwać dostęp wszyscy użytkownicy aplikacji ASP.NET; profil ASP.NET (Zobacz System.Web.Profile przestrzeń nazw), która utrzymuje wartości użytkownika w magazynie danych bez wygasania ich przy użyciu limitu czasu; ASP.NET System.Web.UI.WebControls, które utrzymują wartości kontroli ViewStatew; ; Właściwość i pola w formularzu HTML, które są dostępne Form z protokołu HTTP POST przy użyciu kolekcji. QueryString CookiesAlternatives to session state include application state (see the Application property) and the ASP.NET cache (see the System.Web.Caching namespace), which store variables that can be accessed by all users of an ASP.NET application; the ASP.NET profile (see the System.Web.Profile namespace), which persists user values in a data store without expiring them using a time-out; ASP.NET System.Web.UI.WebControls, which persist control values in the ViewState; Cookies; the QueryString property; and fields on an HTML form that are available from an HTTP POST using the Form collection. Aby uzyskać więcej informacji na temat różnic między stanem sesji i innymi alternatywami zarządzania stanami, zobacz zalecenia dotyczące zarządzania stanem ASP.NET.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Właściwości

CodePage

Pobiera lub ustawia identyfikator zestawu znaków dla bieżącej sesji.Gets or sets the character-set identifier for the current session.

Contents

Pobiera odwołanie do bieżącego obiektu stanu sesji.Gets a reference to the current session-state object.

CookieMode

Pobiera wartość wskazującą, czy aplikacja jest skonfigurowana pod kątem sesji bez plików cookie.Gets a value that indicates whether the application is configured for cookieless sessions.

Count

Pobiera liczbę elementów w kolekcji stanu sesji.Gets the number of items in the session-state collection.

IsCookieless

Pobiera wartość wskazującą, czy identyfikator sesji jest osadzony w adresie URL lub jest przechowywany w pliku cookie HTTP.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession

Pobiera wartość wskazującą, czy sesja została utworzona przy użyciu bieżącego żądania.Gets a value indicating whether the session was created with the current request.

IsReadOnly

Pobiera wartość wskazującą, czy sesja jest tylko do odczytu.Gets a value indicating whether the session is read-only.

IsSynchronized

Pobiera wartość wskazującą, czy dostęp do kolekcji wartości stanu sesji jest synchronizowany (bezpieczny wątkowo).Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32]

Pobiera lub ustawia wartość sesji według indeksu liczbowego.Gets or sets a session value by numerical index.

Item[String]

Pobiera lub ustawia wartość sesji według nazwy.Gets or sets a session value by name.

Keys

Pobiera kolekcję kluczy dla wszystkich wartości przechowywanych w kolekcji stanów sesji.Gets a collection of the keys for all values stored in the session-state collection.

LCID

Pobiera lub ustawia identyfikator ustawień regionalnych (LCID) bieżącej sesji.Gets or sets the locale identifier (LCID) of the current session.

Mode

Pobiera bieżący tryb stanu sesji.Gets the current session-state mode.

SessionID

Pobiera unikatowy identyfikator sesji.Gets the unique identifier for the session.

StaticObjects

Pobiera kolekcję obiektów zadeklarowanych przez <object Runat="Server" Scope="Session"/> Tagi w pliku aplikacji ASP.NET Global. asax.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot

Pobiera obiekt, którego można użyć do synchronizowania dostępu do kolekcji wartości stanu sesji.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout

Pobiera lub ustawia czas (w minutach) dozwolony między żądaniami przed zakończeniem sesji przez dostawcę stanu sesji.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Metody

Abandon()

Anuluje bieżącą sesję.Cancels the current session.

Add(String, Object)

Dodaje nowy element do kolekcji stanów sesji.Adds a new item to the session-state collection.

Clear()

Usuwa wszystkie klucze i wartości z kolekcji stanu sesji.Removes all keys and values from the session-state collection.

CopyTo(Array, Int32)

Kopiuje kolekcję wartości stanu sesji do jednowymiarowej tablicy, rozpoczynając od określonego indeksu w tablicy.Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetEnumerator()

Zwraca moduł wyliczający, który może być używany do odczytywania wszystkich nazw zmiennych stanu sesji w bieżącej sesji.Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
Remove(String)

Usuwa element z kolekcji stanów sesji.Deletes an item from the session-state collection.

RemoveAll()

Usuwa wszystkie klucze i wartości z kolekcji stanu sesji.Removes all keys and values from the session-state collection.

RemoveAt(Int32)

Usuwa element z kolekcji stanów sesji z określonym indeksem.Deletes an item at a specified index from the session-state collection.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Metody rozszerzania

Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable do określonego typu.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable w oparciu o określony typ.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Włącza przetwarzanie równoległe zapytania.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerable KonwertujeIQueryabledo.Converts an IEnumerable to an IQueryable.

Dotyczy

Zobacz też