Compartir a través de


HttpSessionState Clase

Definición

Proporciona acceso a los valores de estado de sesión, así como a la configuración de nivel de sesión y a los métodos de administración de 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 la entrada del usuario, que es una amenaza de seguridad potencial. De forma predeterminada, ASP.NET páginas web validan que la entrada del usuario no incluye elementos HTML ni de script. Para obtener más información, consulte Información general sobre vulnerabilidades de seguridad de script.

<%@ 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 única del explorador en varias solicitudes. Puede almacenar una colección de valores a los que hace referencia un nombre de clave o un í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 propiedad 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 que el explorador realice una nueva solicitud antes del número de minutos especificados en el pase de propiedad Timeout . 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 apaga 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 se establece InProcen .

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, consulte la propiedad SessionID.

El estado de sesión no persiste en 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 de 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 el proceso de ASP.NET o IIS o la aplicación ASP.NET se reinicia 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, consulte Session-State Modos.

Las alternativas al estado de sesión incluyen el estado de la aplicación (vea la Application propiedad) y la memoria caché de ASP.NET (vea 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 que expiren con 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; Cookies; la QueryString propiedad ; y los campos de un formulario HTML que están disponibles desde un almacén de datos HTTP POST con 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 estado, consulte ASP.NET Recomendaciones de administración de estado.

Propiedades

Nombre Description
CodePage

Obtiene o establece el identificador del juego de caracteres para 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 estado de sesión.

IsCookieless

Obtiene un valor que indica si el identificador de sesión está incrustado en la dirección URL o almacenado 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 solo lectura.

IsSynchronized

Obtiene un valor que indica si el acceso a la colección de valores de estado de sesión está sincronizado (seguro para 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 las claves de todos los valores almacenados en la colección de estado 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 de la sesión.

StaticObjects

Obtiene una colección de objetos declarados por <object Runat="Server" Scope="Session"/> etiquetas dentro del archivo de aplicación global.asax de ASP.NET.

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, permitidas entre solicitudes antes de que el proveedor de estado de sesión finalice la sesión.

Métodos

Nombre Description
Abandon()

Cancela la sesión actual.

Add(String, Object)

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

Clear()

Quita todas las claves y valores de la colección de estado de sesión.

CopyTo(Array, Int32)

Copia la colección de valores de estado de sesión en una matriz unidimensional, empezando por el índice especificado en la matriz.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que se puede usar para leer todos los nombres de variables de estado de sesión en la sesión actual.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
Remove(String)

Elimina un elemento de la colección de estado de sesión.

RemoveAll()

Quita todas las claves y valores de la colección de estado de sesión.

RemoveAt(Int32)

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

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

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

Se aplica a

Consulte también