post icon

Crear y Utilizar Sesiones en ASP.Net

El objeto Session, nos permite crear sesiones de usuarios, que tiene un tiempo de validez antes de expirar, por default su tiempo es de 20 minutos. El mismo tiene varios usos y no sólo el de crear sesiones, su uso es típico en aplicaciones con  carritos de compra, en foro para establecer un tiempo mínimo para poder votar o volver a escribir un mensaje.

El mismo se almacena en el servidor, y es administrado por él. En el siguiente ejemplo escrito en C#veremos una similación precaria de un formulario que va cargando Productos en un ArrayList, y lo envía al servidor para almacenarlo en una variable de sesión, luego abriendo incluso otra ventana el mismo puede ser recuperado y listado. El diseño de la primer pagina sigue asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sesion.aspx.cs" Inherits="Examples_Sesion" %>
 
<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
        <table style="width:100%;">
            <tr>
                <td>
                    Producto</td>
            </tr>
            <tr>
                <td>
                    <asp:TextBox ID="txtProducto" runat="server"></asp:TextBox>
                    <asp:Button ID="btnAgregar" runat="server" onclick="btnAgregar_Click" 
                        Text="Agregar" />
                </td>
            </tr>
        </table>
 
    </div>
    <asp:HyperLink ID="HyperLink1" runat="server" 
        NavigateUrl="~/Examples/Productos.aspx">HyperLink</asp:HyperLink>
    </form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections;
 
public partial class Examples_Sesion : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
    protected void btnAgregar_Click(object sender, EventArgs e)
    {
        ArrayList productos;
        if (Session["s_producto"] != null)
            productos = (ArrayList)Session["s_producto"];
       else
            productos = new ArrayList();
        productos.Add(this.txtProducto.Text.ToString());
        Session["s_producto"] = productos;
    }
}

En la primer página vemos un link quer redirecciona a esta página que construiremos ahora

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Productos.aspx.cs" Inherits="Examples_Productos" %>
 
<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
 
    </div>
    </form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections;
 
public partial class Examples_Productos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ArrayList productos = new ArrayList();
        if (Session["s_producto"] != null)
        {
            productos = (ArrayList)Session["s_producto"];
            foreach (string item in productos)
                Response.Write(item + "<br/>");
        }
        else
        { Response.Write("No cargo ningun producto"); }
    }
}

Comentarios desde Facebook:

  1. avatar
    Matias ARGENTINA Google Chrome Windows
    29 abril 2013 at 16:50 #

    Hola a todos , espero me puedan ayudar. Necesito algo similar pero para VB.Net.
    La cuestion es la siguiente: tengo un WebService que requiere un login inicial. Necesito guardar los datos de login (usuario y contraseña) para cuando se instancie nuevamente chequee si ese usuario ya esta logeado o no.
    me sirve el ejemplo de arriba? saludos y gracias

  2. avatar
    DebianZeus PARAGUAY Mozilla Firefox Windows
    17 junio 2010 at 12:37 #

    Buenisimo el articulo, bien presentado :)

    Tambien podes mencionar que se puede definir que los datos del objeto Session pueden ser guardados en otros proveedores de persistencia, especificamente SQLServer por defecto se guarda InProc (w3c.exe se incha como sapo jejeje) Eso para aplicaciones chicas y si tu servidor tiene poco RAM y mucho trafico ^_^

    Un saludo GeekZero

    • avatar
      GeekZero PARAGUAY Mozilla Firefox Windows
      17 junio 2010 at 12:45 #

      Tenes razón, se me paso eso.. Me queda de tarea :P como hacer eso y en que casos conviene usar uno u otro.

      Saludos.-

Trackbacks/Pingbacks

  1. Como Configurar SQL Server para almacenar el estado de la sesión de ASP.NET | DevTroce.com WordPress - 22 febrero 2011

    […] la sesión de ASP.NET Las variables de sesión ya hemos visto como utilizar anteriormente en éste post, pero en ese momento sólo lo veíamos configurado con el método InProc que consume bastante […]

  2. Tweets that mention Crear y Utilizar Sesiones en ASP.Net | DevTroce.com -- Topsy.com - 17 junio 2010

    […] This post was mentioned on Twitter by Hire ASP.Net Experts, DevTroce. DevTroce said: Crear y Utilizar Sesiones en ASP.Net: El objeto Session, nos permite crear sesiones de… http://goo.gl/fb/3TUEm […]

Responder