HttpSessionState HttpSessionState HttpSessionState HttpSessionState Class

Definición

Proporciona acceso a los valores del estado de la sesión, a la configuración de la sesión y a los métodos de administración de la duración.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
Herencia
HttpSessionStateHttpSessionStateHttpSessionStateHttpSessionState
Implementaciones

Ejemplos

En el ejemplo de código siguiente se establecen y recuperan valores del estado de sesión.The following code example sets and retrieves values from session state.

Importante

Este ejemplo tiene un cuadro de texto que acepta datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad.This example has a text box that accepts user input, which is a potential security threat. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Para más información, consulte Información general sobre los ataques mediante scripts.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>

Comentarios

ASP.NET proporciona administración de Estados de sesión para que pueda almacenar información asociada a una sesión de explorador única en varias solicitudes.ASP.NET provides session-state management to enable you to store information associated with a unique browser session across multiple requests. Puede almacenar una colección de valores a los que se hace referencia mediante un nombre de clave o un índice numérico.You can store a collection of values referenced by a key name or by numerical index. El acceso a la funcionalidad y los valores de la HttpSessionState sesión está disponible mediante la clase, Session a la que se puede tener acceso a través de Pagela propiedad del actual HttpContext, o la Session propiedad de.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.

Los datos de la sesión se asocian a una sesión específica del explorador mediante un identificador único.Session data is associated with a specific browser session using a unique identifier. De forma predeterminada, este identificador se almacena en una cookie de sesión que no expira en el explorador, pero también puede configurar la aplicación para almacenar el identificador de sesión en la dirección URL estableciendo el cookieless atributo en true o UseUri en el elemento sessionState de la configuración de la aplicación.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. Puede hacer que ASP.net determine si las cookies son compatibles con el explorador especificando un UseDeviceProfile valor de cookieless para el atributo.You can have ASP.NET determine whether cookies are supported by the browser by specifying a value of UseDeviceProfile for the cookieless attribute. También puede hacer que ASP.net determine si las cookies están habilitadas para el explorador especificando AutoDetect un valor cookieless de para el atributo.You can also have ASP.NET determine whether cookies are enabled for the browser by specifying a value of AutoDetect for the cookieless attribute. Si se admiten cookies cuando UseDeviceProfile se especifica o se habilita cuando AutoDetect se especifica, el identificador de sesión se almacenará en una cookie; de lo contrario, el identificador de sesión se almacenará en la dirección 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.

Las sesiones se inician durante la primera solicitud y los valores de sesión se conservarán siempre que el explorador realice una nueva solicitud antes del número de minutos especificado Timeout en la fase de la propiedad.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. Cuando se inicia una nueva sesión, se Start genera el evento de sesión.When a new session begins, the session Start event is raised. Puede usar este evento para realizar cualquier trabajo adicional en el inicio de una sesión, como establecer los valores de sesión predeterminados.You can use this event to perform any additional work at the start of a session, such as setting default session values. Cuando se agota el tiempo de espera Abandon de una sesión, se llama al método o se cierra la aplicación ASP.net End , se genera el evento de sesión.When a session times out, the Abandon method is called, or the ASP.NET application is shut down, the session End event is raised. Puede usar este evento para realizar cualquier limpieza necesaria.You can use this event to perform any necessary cleanup. El End evento solo se desencadena cuando el estado mode de la sesión se InProcestablece en.The End event is raised only when the session state mode is set to InProc.

Para mejorar el rendimiento, las sesiones que usan cookies no asignan el almacenamiento de sesión hasta que Session los datos se almacenan realmente en el objeto.To improve performance, sessions that use cookies do not allocate session storage until data is actually stored in the Session object. Para obtener más información, vea la propiedad SessionID.For more information, see the SessionID property.

El estado de sesión no se conserva en los límites de la aplicación ASP.NET.Session state does not persist across ASP.NET application boundaries. Si un explorador navega a otra aplicación, la información de la sesión no está disponible para la nueva aplicación.If a browser navigates to another application, the session information is not available to the new application.

De forma predeterminada, los valores de sesión se almacenan en memoria en el servidor Web.Session values are stored in memory on the Web server, by default. También puede almacenar valores de sesión en una base de datos SQL Server, un servidor de estado ASP.NET o un servidor personalizado.You can also store session values in a SQL Server database, an ASP.NET state server, or a custom server. Esto le permite conservar los valores de sesión en los casos en los que el proceso de ASP.NET o IIS o la aplicación ASP.NET se reinicie y para que los valores de sesión estén disponibles en todos los servidores de una granja de servidores 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. Este comportamiento se configura estableciendo el mode atributo en un valor válido SessionStateMode en el elemento sessionState de la configuración de la aplicación.This behavior is configured by setting the mode attribute to a valid SessionStateMode value in the sessionState element of your application configuration. Para obtener más información, vea modos de estado de sesión.For more information, see Session-State Modes.

Entre las alternativas al estado de la sesión se incluyen Application el estado de la aplicación (vea la propiedad System.Web.Caching ) y la memoria caché ASP.net (vea el espacio de nombres), que almacenan las variables a las que pueden tener acceso todos los usuarios de una aplicación ASP.net; el perfil ASP.net (vea la System.Web.Profile espacio de nombres), que conserva los valores de usuario en un almacén de datos sin que expiren con un tiempo de espera. ASP.net System.Web.UI.WebControls, que conservan los valores ViewStatede control en; ; la QueryString propiedad y los campos de un formulario HTML que están disponibles en un HTTP POST mediante la Form colección. 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. Para obtener más información sobre las diferencias entre el estado de sesión y otras alternativas de administración de estado, consulte recomendaciones de administración de estado de ASP.net.For more details on the differences between session state and other state-management alternatives, see ASP.NET State Management Recommendations.

Propiedades

CodePage CodePage CodePage CodePage

Obtiene o establece el identificador de juego de caracteres de la sesión actual.Gets or sets the character-set identifier for the current session.

Contents Contents Contents Contents

Obtiene una referencia al objeto de estado de sesión actual.Gets a reference to the current session-state object.

CookieMode CookieMode CookieMode CookieMode

Obtiene un valor que indica si la aplicación está configurada para sesiones sin cookies.Gets a value that indicates whether the application is configured for cookieless sessions.

Count Count Count Count

Obtiene el número de elementos de la colección de estados de sesión.Gets the number of items in the session-state collection.

IsCookieless IsCookieless IsCookieless IsCookieless

Obtiene un valor que indica si el identificador de la sesión está incrustado en la dirección URL o se almacena en una cookie HTTP.Gets a value indicating whether the session ID is embedded in the URL or stored in an HTTP cookie.

IsNewSession IsNewSession IsNewSession IsNewSession

Obtiene un valor que indica si la sesión se creó con la solicitud actual.Gets a value indicating whether the session was created with the current request.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Obtiene un valor que indica si la sesión es de sólo lectura.Gets a value indicating whether the session is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Obtiene un valor que indica si el acceso a la colección de valores del estado de la sesión está sincronizado (es seguro para la ejecución de subprocesos).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]

Obtiene o establece un valor de sesión por índice numérico.Gets or sets a session value by numerical index.

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

Obtiene o establece un valor de sesión por nombre.Gets or sets a session value by name.

Keys Keys Keys Keys

Obtiene una colección de claves para todos los valores almacenados en la colección de estados de sesión.Gets a collection of the keys for all values stored in the session-state collection.

LCID LCID LCID LCID

Obtiene o establece el identificador de configuración regional (LCID) de la sesión actual.Gets or sets the locale identifier (LCID) of the current session.

Mode Mode Mode Mode

Obtiene el modo actual del estado de la sesión.Gets the current session-state mode.

SessionID SessionID SessionID SessionID

Obtiene el identificador único de la sesión.Gets the unique identifier for the session.

StaticObjects StaticObjects StaticObjects StaticObjects

Obtiene una colección de objetos declarados mediante etiquetas <object Runat="Server" Scope="Session"/> en el archivo de aplicación de 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 SyncRoot SyncRoot SyncRoot

Obtiene un objeto que se puede utilizar para sincronizar el acceso a la colección de valores de estado de la sesión.Gets an object that can be used to synchronize access to the collection of session-state values.

Timeout Timeout Timeout Timeout

Obtiene o establece la cantidad de tiempo (en minutos) que se permite entre solicitudes antes de que el proveedor de estado de sesión termine la sesión.Gets or sets the amount of time, in minutes, allowed between requests before the session-state provider terminates the session.

Métodos

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

Cancela la sesión actual.Cancels the current session.

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

Agrega un nuevo elemento a la colección de estados de sesión.Adds a new item to the session-state collection.

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

Quita todas las claves y todos los valores de la colección de estados de sesión.Removes all keys and values from the session-state collection.

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

Copia la colección de valores de estado de sesión a una matriz unidimensional, empezando por el índice especificado de la matriz.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)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

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

Devuelve un enumerador que se puede utilizar para leer todos los nombres de variables de estado de sesión en la sesión actual.Returns an enumerator that can be used to read all the session-state variable names in the current session.

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

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Elimina un elemento de la colección de estado de la sesión.Deletes an item from the session-state collection.

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

Quita todas las claves y todos los valores de la colección de estados de sesión.Removes all keys and values from the session-state collection.

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

Elimina un elemento del índice especificado de la colección de estado de la sesión.Deletes an item at a specified index from the session-state collection.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Métodos de extensión

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

Convierte los elementos de IEnumerable en el tipo especificado.Casts the elements of an IEnumerable to the specified type.

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

Filtra los elementos de IEnumerable en función de un tipo especificado.Filters the elements of an IEnumerable based on a specified type.

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

Habilita la paralelización de una consulta.Enables parallelization of a query.

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

Convierte una interfaz IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Se aplica a

Consulte también: