HttpSessionState Clase

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.

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
HttpSessionState
Implementaciones

Ejemplos

En el ejemplo de código siguiente se establecen y recuperan valores del estado de sesión.

Importante

Este ejemplo tiene un cuadro de texto que acepta datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para más información, consulte Información general sobre los ataques mediante scripts.

<%@ 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 estado de sesión para permitirle almacenar información asociada a una sesión de explorador única en varias solicitudes. Puede almacenar una colección de valores a los que hace referencia un nombre de clave o por índice numérico. El acceso a los valores de sesión y la funcionalidad está disponible mediante la HttpSessionState clase , que es accesible a través de la Session propiedad de la actual HttpContexto la Session propiedad de Page.

Los datos de sesión están asociados a una sesión específica del explorador mediante un identificador único. 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 true en o UseUri en el elemento sessionState de la configuración de la aplicación. Puede tener ASP.NET determinar si el explorador admite cookies especificando un valor de UseDeviceProfile para el cookieless atributo . También puede tener ASP.NET determinar si las cookies están habilitadas para el explorador especificando un valor de AutoDetect para el cookieless atributo . 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.

Las sesiones se inician durante la primera solicitud y los valores de sesión se conservarán siempre y cuando el explorador realice una nueva solicitud antes del número de minutos especificados en el paso de la Timeout propiedad. Cuando se inicia una nueva sesión, se genera el evento de sesión Start . Puede usar este evento para realizar cualquier trabajo adicional al inicio de una sesión, como establecer valores de sesión predeterminados. Cuando se agota el tiempo de espera de una sesión, se llama al Abandon método o se cierra la aplicación ASP.NET, se genera el evento de sesión End . Puede usar este evento para realizar cualquier limpieza necesaria. El End evento solo se genera cuando el estado mode de sesión está establecido en InProc.

Para mejorar el rendimiento, las sesiones que usan cookies no asignan almacenamiento de sesión hasta que los datos se almacenan realmente en el Session objeto. Para obtener más información, vea la propiedad SessionID.

El estado de sesión no se conserva entre ASP.NET límites de la aplicación. Si un explorador navega a otra aplicación, la información de sesión no está disponible para la nueva aplicación.

Los valores de sesión se almacenan en memoria en el servidor web de forma predeterminada. 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. Esto le permite conservar los valores de sesión en los casos en los que se reinicia el proceso de ASP.NET o IIS o la aplicación ASP.NET y para que los valores de sesión estén disponibles en todos los servidores de una granja de servidores web. 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. Para obtener más información, vea Modos de estado de sesión.

Entre las alternativas al estado de sesión se incluyen el estado de la aplicación (vea la Application propiedad) y la memoria caché de ASP.NET (consulte el System.Web.Caching espacio de nombres), que almacenan variables a las que pueden acceder todos los usuarios de una aplicación de ASP.NET; el perfil de ASP.NET (vea el System.Web.Profile espacio de nombres), que conserva los valores de usuario en un almacén de datos sin expirar mediante un tiempo de espera; ASP.NET , que conservan los valores de control en ; ; la propiedad y los campos de un formulario HTML que están disponibles desde un almacén de datos HTTP sin expirar mediante un tiempo de espera; ASP.NET System.Web.UI.WebControls, que conservan los valores de control en ViewState; ; Cookiesla QueryString propiedad y los campos de un formulario HTML que están disponibles desde un formulario HTTP que están disponibles desde un almacén de datos HTTP POST mediante la Form colección . Para obtener más información sobre las diferencias entre el estado de sesión y otras alternativas de administración de estados, consulte ASP.NET Recomendaciones de administración de estado.

Propiedades

CodePage

Obtiene o establece el identificador de juego de caracteres de la sesión actual.

Contents

Obtiene una referencia al objeto de estado de sesión actual.

CookieMode

Obtiene un valor que indica si la aplicación está configurada para sesiones sin cookies.

Count

Obtiene el número de elementos de la colección de estados de sesión.

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.

IsNewSession

Obtiene un valor que indica si la sesión se creó con la solicitud actual.

IsReadOnly

Obtiene un valor que indica si la sesión es de sólo lectura.

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).

Item[Int32]

Obtiene o establece un valor de sesión por índice numérico.

Item[String]

Obtiene o establece un valor de sesión por nombre.

Keys

Obtiene una colección de claves para todos los valores almacenados en la colección de estados de sesión.

LCID

Obtiene o establece el identificador de configuración regional (LCID) de la sesión actual.

Mode

Obtiene el modo de estado de sesión actual.

SessionID

Obtiene el identificador único para la sesión.

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.

SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a la colección de valores de estado de sesión.

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.

Métodos

Abandon()

Cancela la sesión actual.

Add(String, Object)

Agrega un nuevo elemento a la colección de estados de sesión.

Clear()

Quita todas las claves y todos los valores de la colección de estados de sesión.

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.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que puede usarse para leer todos los nombres de variable de estado de sesión en la sesión actual.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Remove(String)

Agrega un elemento de la colección de estados de sesión.

RemoveAll()

Quita todas las claves y todos los valores de la colección de estados de sesión.

RemoveAt(Int32)

Elimina un elemento del índice especificado de la colección de estado de la sesión.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Consulte también