HttpSessionState HttpSessionState HttpSessionState HttpSessionState Class

Определение

Предоставляет доступ к значениям состояния сеанса, а также к параметрам уровня сеанса и методам управления длительностью сеанса.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
Наследование
HttpSessionStateHttpSessionStateHttpSessionStateHttpSessionState
Реализации

Примеры

В следующем примере кода задает и получает значения из состояния сеанса.The following code example sets and retrieves values from session state.

Важно!

В этом примере имеется текстовое поле, принимающее вводимые пользователем данные, что является потенциальной угрозой безопасности.This example has a text box that accepts user input, which is a potential security threat. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.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>

Комментарии

ASP.NET предоставляет управление состоянием сеанса, чтобы можно было хранить сведения, связанные с сеансом браузера уникальный нескольких запросов.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. Вы можете хранить коллекции значений, указанных по имени ключа или по числовому индексу.You can store a collection of values referenced by a key name or by numerical index. Доступ к значениям сеанса и функциональные возможности используется HttpSessionState класс, который можно получить с помощью Session текущего элемента HttpContext, или Session свойство Page.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.

Данные сеанса, связанный с сеансом конкретного браузера, с использованием уникального идентификатора.Session data is associated with a specific browser session using a unique identifier. По умолчанию этот идентификатор хранится в файле cookie сеанса не истекает в браузере, но можно также настроить приложения для хранения идентификатора сеанса в URL-адрес, задав cookieless атрибут true или UseUri в sessionState элемент конфигурации приложения.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. Вы можете определить, поддерживаются ли файлы cookie с помощью браузера, указав значение ASP.NET UseDeviceProfile для cookieless атрибута.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. Вы также можете определить, включены ли файлы cookie для браузера, указав значение ASP.NET AutoDetect для cookieless атрибута.You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Если файлы cookie, поддерживаются при UseDeviceProfile указан, или когда включен AutoDetect указан, то сеанс будет иметь идентификатор, хранимые в файле cookie; в противном случае будет храниться идентификатор сеанса в 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.

Сеансы запускаются во время первого запроса и значения сеанса будет сохраняться до тех пор, пока выполняется новый запрос браузером перед количество минут, определенных в Timeout pass свойство.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. При начале нового сеанса, согласованность сеанса Start события.When a new session begins, the session Start event is raised. Это событие можно использовать для выполнения дополнительных операций в начале сеанса, например, установка по умолчанию значения сеанса.You can use this event to perform any additional work at the start of a session, such as setting default session values. При превышении времени ожидания, Abandon вызывается метод, или приложения ASP.NET выключен, сеанс 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. Это событие можно использовать, чтобы выполнить необходимые операции очистки.You can use this event to perform any necessary cleanup. End Событие возникает только тогда, когда состояние сеанса mode присваивается InProc.The End event is raised only when the session state mode is set to InProc.

Чтобы повысить производительность, сеансы, которые используют файлы cookie не будет выделено хранилища сеанса пока не будет в действительности данные хранятся в Session объекта.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Дополнительные сведения см. в описании свойства SessionID.For more information, see the SessionID property.

Состояние сеанса не сохраняется за пределами границ приложения ASP.NET.Session state does not persist across ASP.NET application boundaries. Если браузер переходит в другое приложение, сведения о сеансе для нового приложения недоступен.If a browser navigates to another application, the session information is not available to the new application.

Значения сеанса хранятся в памяти на веб-сервере, по умолчанию.Session values are stored in memory on the Web server, by default. Можно также хранить значения сеанса в базе данных SQL Server, на сервере состояний ASP.NET или пользовательский сервер.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. Это позволяет сохранить значения сеанса, в случаях, где перезапускает процесс ASP.NET или IIS или приложения ASP.NET и сделать доступными значения сеанса на всех серверах в веб-ферме.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. Это поведение, настроить, задав mode атрибут является допустимым SessionStateMode значение в sessionState элемент конфигурации приложения.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Дополнительные сведения см. в разделе режимы состояния сеанса.For more information, see Session-State Modes.

Альтернативы состоянию сеанса включают состояние приложения (см. в разделе Application свойства) и кэш ASP.NET (см. в разделе System.Web.Caching пространство имен), какие переменные хранилища, которые может осуществляться всеми пользователями приложения ASP.NET; профиля ASP.NET (см. в разделе System.Web.Profile пространство имен), хранящего значения пользователя в хранилище данных без истечение срока действия их с помощью времени ожидания; ASP.NET System.Web.UI.WebControls, который сохранения значений элементов управления в ViewState; Cookies; QueryString свойство; и поля в HTML-формы, которые доступны из HTTP POST с помощью Form коллекции.Alternatives 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. Дополнительные сведения о различиях между состоянием сеанса и другие альтернативные элементы управления состоянием см. в разделе управления состоянием.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Свойства

CodePage CodePage CodePage CodePage

Возвращает или задает идентификатор кодировки для текущего сеанса.Gets or sets the character-set identifier for the current session.

Contents Contents Contents Contents

Получает ссылку на текущий объект состояния сеанса.Gets a reference to the current session-state object.

CookieMode CookieMode CookieMode CookieMode

Возвращает значение, позволяющее определить, настроено ли приложение для сеансов без поддержки файлов Cookie.Gets a value that indicates whether the application is configured for cookieless sessions.

Count Count Count Count

Получает число элементов в коллекции состояний сеанса.Gets the number of items in the session-state collection.

IsCookieless IsCookieless IsCookieless IsCookieless

Возвращает значение, позволяющее определить, был ли идентификатор сеанса внедрен в URL-адрес или сохранен в HTTP-файле Cookie.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession IsNewSession IsNewSession IsNewSession

Возвращает значение, позволяющее определить, был ли создан сеанс с текущим запросом.Gets a value indicating whether the session was created with the current request.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Возвращает значение, позволяющее определить, доступен ли сеанс только для чтения.Gets a value indicating whether the session is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Возвращает значение, позволяющее определить, синхронизирован ли доступ к коллекции значений состояния сеанса (потокобезопасный доступ).Gets a value indicating whether access to the collection of session-state values is synchronized (thread safe).

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Возвращает или задает значение сеанса по числовому индексу.Gets or sets a session value by numerical index.

Item[String] Item[String] Item[String] Item[String]

Возвращает или задает значение сеанса по имени.Gets or sets a session value by name.

Keys Keys Keys Keys

Возвращает коллекцию ключей для всех значений, хранящихся в коллекции состояния сеанса.Gets a collection of the keys for all values stored in the session-state collection.

LCID LCID LCID LCID

Возвращает или задает код языка текущего сеанса.Gets or sets the locale identifier (LCID) of the current session.

Mode Mode Mode Mode

Возвращает текущий режим состояния сеанса.Gets the current session-state mode.

SessionID SessionID SessionID SessionID

Возвращает для сеанса уникальный идентификатор.Gets the unique identifier for the session.

StaticObjects StaticObjects StaticObjects StaticObjects

Возвращает коллекцию объектов, объявленных в файле Global.asax приложения ASP.NET тегами <object Runat="Server" Scope="Session"/>.Gets a collection of objects declared by <object Runat="Server" Scope="Session"/> tags within the ASP.NET application file Global.asax.

SyncRoot SyncRoot SyncRoot SyncRoot

Возвращает объект, который можно использовать для синхронизации доступа к коллекции значений состояния сеанса.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout Timeout Timeout Timeout

Получает или задает количество времени (в минутах), которое проходит между запросами, прежде чем поставщик состояния сеанса завершает сеанс.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Методы

Abandon() Abandon() Abandon() Abandon()

Отменяет текущий сеанс.Cancels the current session.

Add(String, Object) Add(String, Object) Add(String, Object) Add(String, Object)

Добавляет новый элемент в коллекцию состояния сеанса.Adds a new item to the session-state collection.

Clear() Clear() Clear() Clear()

Удаляет из коллекции состояния сеанса все ключи и значения.Removes all keys and values from the session-state collection.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Копирует коллекцию значений состояния сеанса в одномерный массив, начиная с заданного индекса массива.Copies the collection of session-state values to a one-dimensional array, starting at the specified index in the array.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает перечислитель, который можно использовать для считывания всех имен переменных состояния сеанса в текущем сеансе.Returns an enumerator that can be used to read all the session-state variable names in the current session.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(String) Remove(String) Remove(String) Remove(String)

Удаляет элемент из коллекции состояния сеанса.Deletes an item from the session-state collection.

RemoveAll() RemoveAll() RemoveAll() RemoveAll()

Удаляет из коллекции состояния сеанса все ключи и значения.Removes all keys and values from the session-state collection.

RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

Удаляет элемент по заданному индексу из коллекции состояния сеанса.Deletes an item at a specified index from the session-state collection.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Методы расширения

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразует IEnumerable для IQueryable.Converts an IEnumerable to an IQueryable.

Применяется к

Дополнительно