TOC

This article is currently in the process of being translated into Spanish (~99% done).

State:

Sessions

Las sesiones pueden ser utilizadas para guardar datos complejos para el usuario, al igual que las cookies. En realidad, las sesiones utilizan cookies para almacenar data, a menos que definas explícitamente lo contrario. Las sesiones pueden usarse fácilmente en ASP.NET gracias al objeto Session. Reutilizaremos el ejemplo de la cookie, utilizando sesiones. Ten en cuenta que las sesiones expiran luego de cierta cantidad de minutos, tal como es configurado en el archivo web.config. Código:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sessions</title>
</head>
<body runat="server" id="BodyTag">
    <form id="form1" runat="server">
    <asp:DropDownList runat="server" id="ColorSelector" autopostback="true" onselectedindexchanged="ColorSelector_IndexChanged">
        <asp:ListItem value="White" selected="True">Select color...</asp:ListItem>
        <asp:ListItem value="Red">Red</asp:ListItem>
        <asp:ListItem value="Green">Green</asp:ListItem>
        <asp:ListItem value="Blue">Blue</asp:ListItem>
    </asp:DropDownList>
    </form>
</body>
</html>

Aquí tenemos el código de atrás (CodeBehind):

using System;
using System.Data;
using System.Web;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(Session["BackgroundColor"] != null)
        {
            ColorSelector.SelectedValue = Session["BackgroundColor"].ToString();
            BodyTag.Style["background-color"] = ColorSelector.SelectedValue;
        }
    }

    protected void ColorSelector_IndexChanged(object sender, EventArgs e)
    {
        BodyTag.Style["background-color"] = ColorSelector.SelectedValue;
        Session["BackgroundColor"] = ColorSelector.SelectedValue;
    }
}

Como puedes apreciar, el ejemplo no requiere de muchos cambios al reemplazar cookies por sesiones. Ten en cuenta que los valores de sesión dependen de la instancia del navegador. Si cierras el navegador, el/los valor/es guardados se perderán.

Si el servidor web recicla el proceso aspnet_wp.exe, las sesiones se perderán ya que las mismas se guardan en memoria. Esto puede evitarse si las sesiones son guardadas en un StateServer distinto o si se guardan en una base de datos SQL (servidor SQL), pero esto queda fuera del alcance de este artículo.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!