Está en la página 1de 41

Administracin del estado

ndice
Descripcin

Leccin: administracin del estado

Leccin: variables de aplicacin y de sesin

17

Leccin: cookies y sesiones que no utilizan cookies 29

Administracin del estado

Descripcin

Administracin del estado

Variables de aplicacin y de sesin

Cookies y sesiones que no utilizan cookies

***

Introduccin

Microsoft ASP.NET permite administrar el estado de una aplicacin Web. El


estado es la capacidad de una aplicacin Web de conservar la informacin del
usuario.
En este mdulo, estudiaremos cmo administrar el estado de una aplicacin
Web ASP.NET.

Objetivos

En este mdulo, aprenderemos a:

Describir la administracin del estado y las distintas opciones disponibles


para administrar el estado en una aplicacin Web ASP.NET.

Utilizar variables de aplicacin y de sesin para administrar el estado en


aplicaciones Web ASP.NET.

Utilizar cookies y sesiones que no utilizan cookies para administrar el


estado en aplicaciones Web ASP.NET.

Administracin del estado

Leccin: administracin del estado

Qu es la administracin del estado?

Tipos de administracin del estado

Administracin del estado en el lado del servidor

Administracin del estado en el lado del cliente

El archivo Global.asax

***

Introduccin

La conexin que se establece entre un usuario (el equipo cliente) y un servidor


Web se denomina sesin. Las sesiones pueden abarcar mltiples pginas Web y
su seguimiento se realiza mediante la administracin del estado.
La administracin del estado es el proceso por el cual mantenemos la misma
informacin a travs de mltiples peticiones para las mismas o distintas pginas
Web.
En esta leccin, empezaremos a conocer en detalle qu es la administracin del
estado y por qu es importante administrar el estado. Estudiaremos la
administracin del estado en el lado del servidor y la administracin del estado
en el lado del cliente. Tambin estudiaremos el archivo global.asax.

Objetivos de la leccin

En esta leccin, aprenderemos a:

Describir la administracin del estado.

Identificar los distintos tipos de opciones de administracin del estado.

Describir la administracin del estado en el lado del servidor.

Describir la administracin del estado en el lado del cliente.

Describir los distintos eventos que controla el archivo global.asax.

Administracin del estado

Qu es la administracin del estado?


Sin administracin del
estado

Con administracin del


estado

Login.aspx

Login.aspx

Introduzca su informacin
de inicio de sesin:
Nombre
John

Introduzca su informacin
de inicio de sesin:
Nombre
John
Apellido
Chen

Apellido
Chen

Enviar
Enviar
Greetings.aspx
Hola

Servidor Web

Enviar
Enviar

Servidor Web

Greetings.aspx
Hola John Chen

He
Heolvidado
olvidado
quin
quineres!!
eres!!

***

Introduccin

Al igual que las tecnologas basadas en Hypertext Transfer Protocol (HTTP),


los formularios Web Forms no tienen estado, lo que significa que no indican
automticamente si las peticiones de una secuencia son todas del mismo cliente
ni si una nica instancia de navegador sigue visualizando de forma activa una
pgina Web o un sitio Web. Adems, las pginas Web se destruyen y vuelven a
crearse a continuacin con cada nueva peticin al servidor Web; por tanto, la
informacin de las pginas no existe ms all del ciclo de vida de una nica
pgina.

Administracin del
estado

ASP.NET ofrece una administracin del estado que guarda informacin en el


servidor entre pginas, que ayuda a mantener la continuidad de la informacin
del usuario (estado) durante una visita a un sitio Web.
Si se mantiene el estado entre pginas, la informacin suministrada
originalmente por los usuarios puede ser reutilizada; por ello, los usuarios no
necesitan volver a introducir la misma informacin varias veces cada vez que se
enva una pgina de retorno al servidor.

Ejemplo

Por ejemplo, en la ilustracin anterior, el usuario, John Chen, introduce su


nombre en el formulario login.aspx. Despus de introducir sus datos personales,
esa informacin se enva al servidor y se muestra la pgina siguiente, el
formulario greetings.aspx. Sin administracin del estado, la informacin que el
usuario ha introducido en la primera pgina se ha perdido.
Sin embargo, si se utiliza administracin del estado en la aplicacin Web, puede
mantenerse el estado a travs de varias pginas Web. Por tanto, cuando la
informacin personal del usuario se enva al servidor, la segunda pgina, el
formulario greetings.aspx, da la bienvenida al usuario con su nombre, John

Administracin del estado

Chen, que el usuario introdujo en el formulario login.aspx, la primera pgina de


la aplicacin Web.

Administracin del estado

Tipos de administracin del estado


Administraci
Administracin del estado en
el lado del servidor
Estado de la aplicacin

La informacin est disponible


para todos los usuarios de una
aplicacin Web

Estado de sesin

La informacin est disponible


nicamente para el usuario de una
sesin especfica

Base de datos

En algunos casos, se utiliza el


soporte de base de datos para
mantener el estado en el sitio Web

Administraci
Administracin del estado en
el lado del cliente
Cookies

Archivo de texto que almacena


informacin para mantener el
estado

Propiedad ViewState

Conserva valores entre mltiples


peticiones para la misma pgina

Cadenas de consulta

Informacin aadida al final de


una URL

***

Introduccin

ASP.NET proporciona dos tipos de administracin del estado que pueden


utilizarse para mantener el estado entre envos y respuestas al servidor. La
eleccin de uno de los dos tipos de administracin del estado disponibles en
ASP.NET depende principalmente de la naturaleza de la aplicacin Web.

Administracin del
estado en el lado del
cliente y en el lado del
servidor

Los dos tipos de administracin del estado son:

Lado servidor
Las opciones de la administracin del estado en el lado del servidor utilizan
recursos del servidor para almacenar la informacin del estado. La
seguridad de estas opciones es mayor que en el lado del cliente.

Lado cliente
La administracin del estado en el lado del cliente no utiliza recursos del
servidor para almacenar la informacin del estado. Las opciones en el lado
del cliente tienden a tener seguridad mnima, pero ofrecen un rpido
rendimiento del servidor porque no existe demanda en el servidor para
mantener el estado.

Lado servidor

La administracin del estado en el lado del servidor contiene diferentes


opciones a escoger, incluyendo:

Estado de aplicacin
En el estado de aplicacin, la informacin est disponible para todos los
usuarios de una aplicacin Web; por ejemplo, almacenar el nmero de
visitantes a una aplicacin Web.

Estado de sesin

Administracin del estado

En el estado de sesin, la informacin est disponible nicamente para un


usuario de una sesin especfica de una aplicacin Web; por ejemplo,
almacenar el esquema de colores preferido de un usuario.

Administracin del estado

Base de datos Microsoft SQL Server o un servidor de estado


Otra opcin de la administracin del estado en el lado del servidor es utilizar
la tecnologa de bases de datos. Podemos utilizar una base de datos SQL
Server o un servidor de estado para almacenar informacin especfica del
usuario cuando el almacn de informacin es de gran tamao. La base de
datos SQL Server o un servidor de estado pueden utilizarse conjuntamente
con el estado de sesin y cookies.

El objeto Cache
Tambin podemos utilizar el objeto Cache para administrar el estado a nivel
de aplicacin.

Lado cliente

La administracin del estado en el lado del cliente tambin ofrece distintas


opciones para mantener el estado. Estas opciones incluyen:

Cookies
Una cookie es un archivo de texto que puede utilizarse para almacenar
pequeas cantidades de informacin necesarias para mantener el estado.

La propiedad ViewState
Los formularios Web Forms proporcionan la propiedad ViewState como
una estructura incluida para conservar automticamente valores entre
mltiples peticiones a la misma pgina. La propiedad ViewState se
mantiene como un campo oculto en la pgina.

Cadenas de consulta
Una cadena de consulta es informacin que se aade al final de una URL
(Uniform Resource Locator). Un ejemplo tpico podra ser el siguiente:
http://www.contoso.com/listwidgets.aspx?category=basic&price=100
En la ruta URL anterior, la cadena de consulta se inicia con un signo de
interrogacin (?) e incluye dos pares atributo-valor, categora y precio.

Nota Este mdulo cubre informacin que pertenece nicamente a cookies.


Para ms informacin sobre ViewState y cadenas de consulta, consultar la
documentacin de Microsoft Visual Studio .NET.

Administracin del estado

Administracin del estado en el lado del servidor

El estado de la aplicacin es un mecanismo de almacenamiento


global accesible desde todas las pginas de la aplicacin Web

El estado de sesin est limitado a la sesin de explorador


actual
z

Los valores se conservan mediante el uso de variables de


aplicacin y de sesin
Escalabilidad

La sesin ASP.NET se identifica con la cadena SessionID


Servidor Web
Equipo cliente
Variables de
aplicacin y de sesin
SessionID

***

Introduccin

ASP.NET ofrece varias opciones para administrar el estado en el lado del


servidor. Los estados de aplicacin y de sesin son dos de estas opciones. Esta
seccin trata de los estados de aplicacin y de sesin en mayor detalle.

Estado de aplicacin

ASP.NET proporciona el estado de aplicacin utilizando una instancia de la


clase HttpApplicationState para cada aplicacin Web activa. El estado de
aplicacin es un mecanismo de almacenamiento global al que se puede acceder
desde todas las pginas de la aplicacin Web, y por tanto es til para almacenar
informacin del usuario que debe preservarse entre transferencias al servidor y
viajes entre pginas.
El estado de la aplicacin es una estructura de diccionario clave-valor que se
crea en cada peticin a una URL especfica. Podemos agregar la informacin
especfica de la aplicacin a esta estructura para almacenarla entre peticiones de
pginas. Despus de agregar la informacin especfica de aplicacin al estado
de la aplicacin, el servidor la gestiona.

Variables de aplicacin

ASP.NET proporciona las variables de aplicacin que mantienen el estado de


aplicacin. Los datos ideales para insertar en variables de aplicacin son los
datos compartidos por mltiples sesiones y que no cambian a menudo.

Estado de sesin

ASP.NET proporciona estado de sesin utilizando una instancia de la clase


HttpSessionState para cada sesin de aplicacin Web activa.
El estado de sesin es similar al estado de aplicacin, salvo en que est limitado
a la sesin actual del navegador. Si distintos usuarios estn utilizando una
aplicacin Web, cada usuario tendr un estado de sesin distinto. Adems, si el
mismo usuario abandona la aplicacin Web y regresa ms tarde, ese usuario
tambin tendr un estado de sesin distinto al que tena antes.

Administracin del estado

El estado de sesin est almacenado como una estructura de diccionario clavevalor que se utiliza par almacenar informacin especfica de la sesin que debe
mantenerse entre transferencias de pginas al servidor y entre peticiones de
pginas. Tras agregar la informacin especfica de la aplicacin al estado de
sesin, el servidor la gestiona. Podemos configurar ASP.NET para
automticamente serialice y almacene la informacin de sesin en una base de
datos SQL Server o en un servidor de estado.
Variables de sesin

ASP.NET proporciona las variables de sesin necesarias para mantener el


estado de sesin. Los datos ideales para almacenar en las variables de estado de
sesin son datos fugaces o confidenciales, especficos de una sesin individual.
Nota Los estados de aplicacin y de sesin se implementan como una tabla
hash, y almacenan datos basndose en combinaciones de pares clave/valor. Una
tabla hash es similar al concepto de un objeto dictionary.

Escalabilidad

Con ASP.NET, el estado de sesin puede utilizarse tanto en configuraciones de


mltiples equipos como de mltiples procesos; optimizando por tanto los
escenarios de escalabilidad de una aplicacin Web.

Identificar y hacer el
seguimiento de una
sesin

Cada sesin de aplicacin Web activa est identificada y monitorizada


utilizando una cadena SessionID de 120 bits que nicamente contiene los
caracteres ASCII permitidos en las URLs. Las cadenas SessionID estn
comunicadas a travs de peticiones cliente-servidor, mediante una cookie HTTP
o mediante una URL modificada, con la cadena SessionID embebida,
denominadas normalmente SessionID sin cookies, dependiendo de la
configuracin de la aplicacin Web.
La administracin del estado en el lado del servidor requiere que una cookie
almacene la SessionID en el equipo cliente. Debido a que la vida de una
SessionID es muy breve, slo lo que dura una sesin, el mecanismo que
ASP.NET utiliza para almacenar la informacin de sesin, en una base de datos
SQL Server o en un servidor de estado, tambin se utiliza para permitir que la
aplicacin sea escalable, pero no para un almacenamiento a largo plazo. Si
deseamos implementar el almacenamiento a largo plazo de la informacin de
sesin del usuario, debemos requerir a los usuarios que introduzcan su
informacin personal, y deberemos implementar nuestra propia solucin de
almacenamiento utilizando una base de datos que almacene permanentemente
la informacin personal de usuarios registrados.

10

Administracin del estado

Administracin del estado en el lado del cliente

Utiliza cookies para mantener el estado


z

Cookies persistentes

Cookies temporales/no persistentes

Menos fiable que las opciones de administracin del estado en el lado del
servidor
z

El usuario puede eliminar cookies

Menos seguro que las opciones de administracin del estado en el lado


del servidor

Cantidad de informacin limitada


z

Restricciones en el lado del cliente en el tamao de los archivos

Servidor Web

Equipo cliente

Cookies

***

Introduccin

La mayora de aplicaciones Web utilizan cookies para la administracin del


estado en el lado del cliente.

Cookies

Una cookie es una pequea cantidad de datos que se almacena en un archivo de


texto en el sistema de archivos del equipo cliente o en memoria en la sesin
cliente-navegador. Una cookie contiene informacin especfica de la pgina que
el servidor enva al cliente, junto con la salida de la pgina.
Podemos utilizar cookies para almacenar informacin sobre un determinado
cliente, sesin o aplicacin. Las cookies se almacenan en el equipo cliente, y
cuando el navegador solicita una pgina, enva la informacin de la cookie,
junto con la informacin solicitada. El servidor est autorizado a leer la cookie
y extraer su valor. Cada cookie contiene la informacin del dominio que invoc
la cookie. Podemos tener varias cookies invocadas para un dominio.

Tipos de cookies

Los dos tipos de cookies son:

Temporales
Las cookies temporales, tambin denominadas cookies de sesin o no
persistentes, existen nicamente en la memoria del navegador. Cuando el
ste se apaga, las cookies temporales que se han aadido se pierden.

Persistentes
Las cookies persistentes son similares a las cookies temporales, excepto en
que las cookies persistentes tienen un periodo de expiracin fijo. Cuando un
navegador solicita una pgina que crea una cookie persistente, ste guarda
esa cookie en el disco duro del usuario. Podemos crear una cookie
persistente que dure meses, o incluso aos, en el equipo cliente. Con
Microsoft Internet Explorer, las cookies persistentes se almacenan en un

Administracin del estado

11

archivo denominado nombreusuario@nombredominio.txt, que se crea en el


disco duro del cliente.

12

Administracin del estado

Vencimiento

Las cookies pueden expirar cuando finaliza la sesin del explorador (cookies
temporales), o pueden existir indefinidamente en el equipo cliente, dependiendo
de las reglas de expiracin del cliente (cookies persistentes).
Los usuarios tambin pueden decidir eliminar cookies de su equipo antes de que
stas expiren. Por tanto, no existe garanta de que una cookie persistente
permanecer en el equipo de un usuario durante el periodo de tiempo
especificado.

Seguridad

Las cookies son menos seguras si las comparamos con las opciones de
administracin del estado en el lado del servidor. Las cookies tambin estn
sujetas a la manipulacin. Lo usuarios pueden manipular cookies en su equipo,
lo que puede representar potencialmente un compromiso de seguridad o puede
hacer que la aplicacin que depende de la cookie pueda fallar.

Informacin limitada

Tambin existe un lmite sobre cunta informacin puede almacenarse en una


cookie ya que los equipos cliente tienen restricciones en el tamao de los
archivos. Adems, cada cookie individual puede contener una cantidad limitada
de informacin, no ms de 4 kilobytes (KB).

Administracin del estado

13

El archivo Global.asax

Slo un archivo Global.asax por aplicacin Web

Almacenado en la raz del directorio virtual de la


aplicacin Web

Utilizado para gestionar eventos de aplicacin y de


sesin

El archivo Global.asax es opcional

***

Introduccin

El archivo global.asax es un archivo declarativo que se utiliza para la gestin de


eventos mientras la aplicacin Web se est ejecutando.
Algunas de las caractersticas del archivo global.asax son:

Por cada aplicacin Web ASP.NET se soporta un archivo global.asax.

El archivo global.asax se almacena en la raz del directorio virtual de la


aplicacin Web.

El archivo global.asax puede gestionar eventos de aplicacin y de sesin


(inicio y final) que pueden utilizarse para inicializar variables de aplicacin
y de sesin.

El archivo global.asax es opcional. Si no definimos el archivo, el marco de


trabajo de las pginas ASP.NET asume que no hemos definido ningn
controlador de eventos de aplicacin o sesin.

14

Administracin del estado

El archivo global.asax (continuacin)


Cliente

Peticin
Peticin

Respuesta
Respuesta

Servidor Web ASP.NET


IIS
IIS
ASP.NET
ASP.NET HTTP
HTTPRuntime
Runtime
Application_BeginRequest
Application_BeginRequest
Application_AuthenticateRequest
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_AuthorizeRequest

Application_EndRequest
Application_EndRequest

Application_ResolveRequestCache
Application_ResolveRequestCache

Application_UpdateRequestCache
Application_UpdateRequestCache

Application_AquireRequestState
Application_AquireRequestState

Application_ReleaseRequestState
Application_ReleaseRequestState

Application_PreRequestHandlerExecute
Application_PreRequestHandlerExecute

Application_PostRequestHandlerExecute
Application_PostRequestHandlerExecute

Ejecucin
Ejecucin de
de la
la pgina
pgina

***

Introduccin

El archivo global.asax es un archivo declarativo que se utiliza para gestionar


eventos mientras la aplicacin Web se est ejecutando.

Categoras de eventos

El archivo global.asax soporta tres categoras de eventos:

Eventos invocados
cuando se solicita una
pgina

Eventos que se invocan cuando se solicita una pgina.

Eventos que se invocan cuando se enva la pgina solicitada.

Eventos de aplicacin condicionales.

La siguiente tabla lista los eventos que se invocan cuando se solicita una
pgina.
Nombre del evento

Descripcin

Application_BeginRequest

Este evento se invoca cada vez que se


recibe una nueva peticin.

Application_AuthenticateRequest

Este evento indica que la peticin est


preparada para ser autenticada.

Application_AuthorizeRequest

Este evento indica que la peticin est


preparada para ser autorizada.

Application_ResolveRequestCache

Este evento es utilizado por el mdulo de


la cach de salida para detener el
procesamiento de peticiones que han
sido almacenadas en cach.

Application_AcquireRequestState

Este evento indica que debera obtenerse


el estado para cada peticin.

Administracin del estado


Application_PreRequestHandlerExecute

Este evento indica que el gestor de


peticiones est a punto de ejecutarse.

15

16

Administracin del estado

Eventos invocados
cuando se enva la
pgina solicitada

Eventos de aplicacin
condicionales

Global.asax tambin incluye eventos invocados cuando la pgina solicitada se


enva de vuelta al cliente. La siguiente tabla lista estos eventos.
Nombre del evento

Descripcin

Application_PostRequestHandlerExecute

Este evento es el primero disponible


despus de que el controlador, como
una pgina ASP.NET o un servicio
Web, haya finalizado su trabajo.

Application_ReleaseRequestState

Este evento se invoca cuando el estado


de la peticin debe almacenarse, porque
la aplicacin Web ASP.NET finaliza
con l.

Application_UpdateRequestCache

Este evento indica que el procesamiento


de cdigo ha finalizado y que el archivo
est preparado para ser agregado a la
cach de ASP.NET.

Application_EndRequest

Este evento es el ltimo evento que se


invoca cuando finaliza la aplicacin
Web ASP.NET.

Los eventos de aplicacin condicionales son eventos que pueden o no ser


lanzados durante le procesamiento de una peticin. La siguiente tabla muestra
algunos de los eventos de aplicacin condicionales ms habituales.
Nombre del evento

Descripcin

Application_Start

Este evento se invoca cuando se inicia


una aplicacin Web ASP.NET.

Application_End

Este evento es otro evento de ocurrencia


nica. Es el evento recproco de
Application_Start; se invoca cuando se
cierra la aplicacin Web ASP.NET.

Session_Start

Este evento se invoca cuando se inicia la


Session de un usuario en una aplicacin
Web ASP.NET.

Session_End

Este evento es un evento reciproco de


Session_Start; este evento se invoca
cuando finaliza la sesin de un usuario.

Application_Error

Este evento se invoca cuando ocurre un


error no controlado en una aplicacin
Web ASP.NET.

Administracin del estado

17

Leccin: variables de aplicacin y de sesin

Inicializar variables de aplicacin y de sesin

Utilizar variables de aplicacin y de sesin

Demostracin: uso de las variables de sesin

Duracin de las variables de aplicacin y de sesin

Almacenamiento escalable de variables de aplicacin y


de sesin

Almacenar las variables de aplicacin y de sesin en


una base de datos

***

Introduccin

Podemos utilizar las variables de aplicacin y de sesin para compartir


informacin entre las pginas de una aplicacin Web ASP.NET. En esta
leccin, estudiaremos cmo inicializar y utilizar las variables de aplicacin y de
sesin. Tambin estudiaremos cmo especificar la duracin de las variables de
aplicacin y de sesin y cmo afectan al almacenamiento escalable. Finalmente,
estudiaremos cmo almacenar las variables de aplicacin y de sesin en una
base de datos.

Objetivos de la leccin

En esta leccin, aprenderemos a:

Inicializar variables de aplicacin y de sesin.

Establecer y leer variables de aplicacin y de sesin.

Modificar la duracin de la variable de aplicacin y de sesin.

Describir los mtodos en el proceso y fuera del proceso utilizados para


almacenar el estado de sesin.

Almacenar variables de aplicacin y de sesin en una base de datos.

18

Administracin del estado

Inicializar variables de aplicacin y de sesin

Las variables se inicializan en Global.asax


z

El objeto Application comparte informacin entre todos


los usuarios de una aplicacin Web

Sub
Sub Application_Start(s
Application_Start(s As
As Object,e
Object,e As
As EventArgs)
EventArgs)
Application("NumberofVisitors")
=
Application("NumberofVisitors") = 00
End
End Sub
Sub
protected
protected void
void Application_Start(Object
Application_Start(Object sender,EventArgs
sender,EventArgs e)
e)
{{
Application["NumberofVisitors"]
Application["NumberofVisitors"] == 0;
0;
}}
z

El objeto Session almacena informacin para una


sesin de usuario concreta

***

Introduccin

Inicializamos las variables de aplicacin y de sesin en los procedimientos de


eventos Start de los objetos Application y Session del archivo global.asax.

Variables de sesin

Utilizamos el objeto Session para almacenar la informacin necesaria de una


sesin de usuario concreta. Las variables que se almacenan en el objeto Session
no se desecharn cuando el usuario viaje por las distintas pginas de la
aplicacin Web. En lugar de ello, estas variables persistirn durante toda la
sesin del usuario.
El siguiente cdigo de ejemplo muestra cmo se utilizan las variables de sesin
para almacenar el esquema de colores preferido de una determinada sesin de
usuario:

Visual Basic .NET

Sub Session_Start(ByVal Sender As Object, _


ByVal e As EventArgs)
Session("BackColor") = "beige"
Session("ForeColor") = "black"
End Sub

C#

protected void Session_Start(Object sender, EventArgs e)


{
Session["BackColor"] = "beige";
Session["ForeColor"] = "black";
}

Administracin del estado

Variables de aplicacin

19

Podemos utilizar el objeto Application para compartir informacin de estado


entre todos los usuarios de una aplicacin Web. Cuando el primer usuario de la
aplicacin Web solicita un archivo .aspx, se crea un objeto Application. El
objeto Application se destruye cuando todos los usuarios han abandonado la
aplicacin Web y, a continuacin, se descarga la aplicacin Web.
Por ejemplo, podramos almacenar el nmero total de visitantes de un sitio Web
en una variable de nivel de aplicacin:

Visual Basic .NET

Sub Application_Start(ByVal Sender As Object, _


ByVal e As EventArgs)
Application("NumberofVisitors") = 0
End Sub

C#

protected void Application_Start(Object sender, EventArgs e)


{
Application["NumberofVisitors"] = 0;
}

20

Administracin del estado

Utilizar variables de aplicacin y de sesin

Establecer variables de aplicacin y sesin

Session("BackColor")
Session("BackColor") == "blue"
"blue"
Application.Lock()
Application.Lock()
Application("NumberOfVisitors")
Application("NumberOfVisitors") +=
+= 11
Application.UnLock()
Application.UnLock()
Session["BackColor"]
Session["BackColor"] == "blue";
"blue";
Application.Lock();
Application.Lock();
Application["NumberOfVisitors"]
Application["NumberOfVisitors"] ==
(int)Application["NumberOfVisitors"]
(int)Application["NumberOfVisitors"] ++ 1;
1;
Application.UnLock();
Application.UnLock();

Leer variables de aplicacin y de sesin

strBgColor
strBgColor == Session("BackColor")
Session("BackColor")
lblNbVisitor.Text
lblNbVisitor.Text == Application("NumberOfVisitors")
Application("NumberOfVisitors")
strBgColor
strBgColor == (string)Session["BackColor"];
(string)Session["BackColor"];
lblNbVisitor.Text
lblNbVisitor.Text == Application["NumberOfVisitors"].ToString();
Application["NumberOfVisitors"].ToString();

***

Introduccin

Para utilizar variables de aplicacin y de sesin en ASP.NET, simplemente


utilizamos una clave de cadena y establecemos un valor.

Establecer variables de
aplicacin y de sesin

Para establecer la variable de sesin, debemos proporcionar una clave que


identifique el elemento que estamos almacenando, utilizando una instruccin
como la siguiente:
Session("BackColor") = "blue"

La instruccin anterior agrega una clave, denominada BackColor, al estado de


sesin con el valor blue.
Puede accederse a las variables de aplicacin en un entorno de mltiples
usuarios; por ello, cuando se actualicen los datos de Application, debemos
evitar que otros usuarios o aplicaciones actualicen los datos simultneamente.
ASP.NET proporciona un sencillo conjunto de mtodos de bloqueo,
Application.Lock() y Application.UnLock(), que pueden utilizarse para evitar
el acceso mltiple y simultneo de la variable de aplicacin. El siguiente cdigo
muestra el uso de los mtodos Application.Lock() y Application.UnLock():
Visual Basic .NET

Application.Lock()
Application("NumberOfVisitors") += 1
Application.UnLock()

C#

Application.Lock();
Application["NumberofVisitors"] =
(int)Application["NumberOfVisitors"] + 1;
Application.UnLock();

Administracin del estado

Leer variables de
aplicacin y de sesin

Para utilizar una variable de sesin o de aplicacin en una pgina ASP.NET,


simplemente necesitamos leer el valor del objeto Session o Application:

Visual Basic.NET

strBgColor = Session("BackColor")
lblNbVisitor.Text = Application("NumberOfVisitors")

C#

strBgColor = (string)Session["BackColor"];
lblNbVistitor.Text =
Application["NumberofVisitors"].ToString();

21

22

Administracin del estado

Demostracin: uso de las variables de sesin

Inicializar una variable de sesin (un


nmero) en global.asax

Acceder a la variable de sesin desde una


pgina

Acceder a la variable de sesin desde otra


pgina y modificarla

Volver a acceder a la variable de sesin


desde la primera pgina

***

Introduccin

En esta demostracin, aprenderemos a utilizar variables de sesin.


El cdigo para esta demostracin se encuentra en los proyectos Demo12VB y
Demo12CS que se pueden encontrar dentro del fichero demos12.zip.

Ejecutar la demostracin
1. Abrir el proyecto Demo12VB o Demo12CS.
2. Abrir la pgina de cdigo subyacente de global.asax.
3. Inicializar una variable de sesin, denominada intNumber a 3, agregando el
siguiente cdigo al procedimiento de evento Session_Start:
Visual Basic .NET

Session("intNumber") = 3

C#

Session["intNumber"] = 3;

4. Abrir los archivos UsingSessionVar1.aspx y UsingSessionVar2.aspx.


Se recupera la variable de sesin y se muestra en el procedimiento de evento
Page_Load.
5. Generar y examinar la pgina UsingSessionVar1.aspx.
Se muestra el valor de la variable de sesin, 3.
6. Hacer clic en Next Page.
Se abre la pgina UsingSessionVar2.aspx, incrementa la variable de sesin
en 4, y muestra el nuevo valor, 7.
7. Hacer clic en Previous Page para regresar a UsingSessionVar1.aspx, que
muestra el nuevo valor de la variable de sesin.

Administracin del estado

23

Duracin de la variable de sesin y de aplicacin

Las variables de sesin tienen una duracin establecida


tras el ltimo acceso
z

20 minutos es la duracin predeterminada

La duracin de la sesin puede modificarse en


Web.config:
<configuration>
<configuration>
<system.web>
<system.web>
<sessionState
<sessionState timeout="10"
timeout="10" />
/>
</system.web>
</system.web>
</configuration>
</configuration>

Las variables de aplicacin persisten hasta que se


provoca el evento Application_End

***

Introduccin

HTTP es un protocolo sin estado. Un servidor Web no tiene medios para


detectar cuando un usuario abandona un sitio Web. En cambio, el servidor
Web detecta que ha transcurrido un determinado periodo de tiempo sin que el
usuario solicite una pgina. En ese momento, el servidor Web asume que el
usuario ha abandonado el sitio Web y elimina todos los elementos del estado de
sesin asociados a ese usuario.

Duracin
predeterminada de la
sesin

De forma predeterminada, el tiempo de una sesin finaliza cuando un usuario


no ha solicitado ninguna pgina durante ms de 20 minutos. Si el mismo
usuario solicita una pgina transcurridos 20 minutos, ser tratado como un
nuevo usuario.
Nota Establecer duraciones de sesin ms cortas permite al sitio Web ahorrar
recursos en el servidor Web. En cambio, si nuestra previsin es que el usuario
pase ms de 20 minutos en nuestro sitio Web, deberamos establecer una
duracin de sesin ms larga.

Modificar la duracin de
la sesin

Podemos modificar la duracin de la sesin en el archivo Web.config. Los


archivos Web.config son archivos Extensible Markup Language (XML)
estndares y legibles por parte del usuario que podemos abrir y modificar con
cualquier editor de texto. Por ejemplo, en el siguiente archivo Web.config, la
duracin de la sesin est establecida en 10 minutos:
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>

24

Administracin del estado

Variable de aplicacin

Las variables de aplicacin persisten hasta que se invoca el evento


Application_End. Application_End se invoca inmediatamente antes del final
de todas las instancias de la aplicacin.

Administracin del estado

25

Almacenamiento escalable de variables de aplicacin y de sesin


y

Por defecto, el estado de sesin se administra en proceso (in process)

Inconveniente del almacenamiento en proceso:


z

ASP.NET proporciona almacenamiento fuera del proceso (out of process)


del estado de sesin
z

No escalable

El estado puede almacenarse en una base de datos SQL Server o un


servidor de estado

Ventajas del almacenamiento fuera del proceso:


z

Escalabilidad

Servidor de estado

Granja Web
Variables de sesin y de aplicacin

-OSQL
Cliente
Variables de sesin y de aplicacin

***

Introduccin

Por defecto, el estado de sesin se administra en proceso (in process). En


proceso significa que toda la informacin que se agrega a un estado de sesin se
almacena en el mismo servidor Web que est ejecutando la aplicacin Web
ASP.NET. Sin embargo, el almacenamiento en proceso del estado de sesin
tiene algunos inconvenientes importantes.

Inconveniente del
almacenamiento en
proceso

Uno de los principales inconvenientes del almacenamiento del estado de sesin


en proceso es que limita la escalabilidad de nuestro sitio Web. No podemos
configurar mltiples servidores para gestionar peticiones.

Fuera de proceso

ASP.NET ofrece dos mtodos que pueden utilizarse para almacenar estado de
sesin fuera de proceso (out of process). Podemos:

Administrar el estado de sesin en una base de datos SQL Server.

Administrar el estado de sesin en un servidor de estado distinto.


Cualquier servidor basado en Microsoft Windows puede ser un servidor de
estado.

Para almacenar el estado de sesin fuera de proceso, debemos modificar el


archivo Web.config para establecer el modo sessionstate con el valor sqlserver
o stateserver, y especificar la ubicacin del servidor. La opcin sqlserver es
similar a la opcin stateserver, salvo en que en la primera la informacin
persiste en SQL Server en lugar de almacenarse en la memoria del equipo.
Ventaja del
almacenamiento fuera
de proceso

La principal ventaja de separar el almacenamiento del estado de sesin de la


aplicacin Web es que podemos utilizar un servidor de estado externo o un
equipo que ejecute SQL Server para almacenar el estado de sesin, haciendo
por tanto que la aplicacin Web sea escalable. Para conseguir aplicaciones Web

26

Administracin del estado

ASP.NET escalables, el estado de sesin debe estar compartido por mltiples


servidores que soporten el escenario de granja Web. En un escenario de granja
Web, mltiples servidores estn configurados para gestionar las peticiones de
los usuarios y, en consecuencia, stas pueden ser ruteadas dinmicamente desde
un servidor a otro sin perder las variables de aplicacin y de sesin. Adems,
las variables de sesin pueden recuperarse desde cualquier servidor de la granja
Web, ya que estn almacenadas en un equipo distinto que ejecuta SQL Server o
en un servidor de estado.

Administracin del estado

27

Almacenar variables de aplicacin y de sesin en una base de


datos

1
1

Configurar el estado de sesin en Web.config


z

Modo establecido a sqlserver o stateserver

<sessionState
<sessionState mode="SQLServer"
mode="SQLServer"
sqlConnectionString="data
sqlConnectionString="data source=SQLServerName;
source=SQLServerName;
Integrated
Integrated security=true"
security=true" />
/>
2

A continuacin, configurar el servidor SQL Server

c:\>
c:\> OSQL
OSQL S
S SQLServerName
SQLServerName E
E <InstallSqlState.sql
<InstallSqlState.sql
z

OSQL crea varios procedimientos almacenados y bases


de datos temporales para almacenar las variables

***

Introduccin

Para almacenar variables de aplicacin y de sesin en una base de datos SQL


Server o en un servidor de estado, debemos seguir los siguientes pasos:
1. Configurar el estado de sesin en el archivo Web.config del servidor Web.
2. Configurar el servidor SQL Server o el servidor de estado.

Configura el estado de
sesin en el archivo
Web.config de nuestro
servidor Web ASP.NET

En el archivo Web.config, debemos modificar la configuracin para establecer


el atributo mode de sessionstate a sqlserver o stateserver. A confinuacin,
debemos modificar el atributo sqlconnectionstring para identificar el nombre
del equipo que ejecuta SQL Server o el servidor de estado.
Por ejemplo, si se utiliza el modo sqlserver con seguridad integrada, debemos
establecer el estado de sesin en Web.config como muestra el siguiente cdigo:
<sessionState mode="SQLServer"
sqlConnectionString="data source=SQLServerName;
Integrated security=true" />

Configurar el servidor
SQL Server

Para configurar el servidor SQL Server, debemos utilizar la herramienta desde


lnea de comandos que proporciona SQL Server, OSQL.exe.
OSQL.exe instala la base de datos denominada ASPState, que se utiliza para
guardar las variables de aplicacin y de sesin.
Para instalar la base de datos ASPState utilizado seguridad integrada, utilizar la
siguiente sintaxis:

28

Administracin del estado


c:\> OSQL S SQLServerName -E <InstallSqlState.sql

Importante Las opciones del comando OSQL son sensibles a maysculas.


Si se utiliza un servidor de estado en lugar de un servidor SQL Server, se debe
iniciar el servicio ASP.NET de Windows en lugar de instalar una base de datos.

Administracin del estado

29

Leccin: sesiones con y sin cookies

Utilizar cookies para almacenar datos de sesin

Prctica dirigida por el instructor: utilizar variables y


cookies

Recuperar informacin de una cookie

Uso de sesiones que no utilizan cookies

Configurar sesiones que no utilizan cookies

***

Introduccin

Las cookies son un medio por el cual la aplicacin Web que se ejecuta en el
servidor Web puede hacer que un cliente devuelva informacin al servidor Web
con cada solicitud HTTP. La devolucin de informacin puede utilizarse para
mantener el estado con el cliente entre mltiples peticiones. Las cookies se
envan al cliente como parte del encabezado HTTP en una solicitud del cliente,
o se envan en una respuesta del servidor.
En esta leccin, estudiaremos cmo utilizar cookies para almacenar datos de
sesin, y cmo recuperar esos datos de una cookie. Tambin estudiaremos las
sesiones que no utilizan cookies y cmo se establecen.

Objetivos de la leccin

En esta leccin, aprenderemos a:

Utilizar cookies para almacenar datos de sesin.

Recuperar informacin de una cookie.

Describir sesiones que no utilizan cookies.

Establecer una sesin que no utiliza cookies.

30

Administracin del estado

Utilizar cookies para almacenar datos de sesin

Crear una cookie:


HttpCookie
HttpCookie objCookie
objCookie == new
new HttpCookie("myCookie");
HttpCookie("myCookie");
HttpCookie
objCookie
=
new
DateTime
now
=
DateTime.Now;
DateTime now
= DateTime.Now;
HttpCookie
objCookie
= new HttpCookie("myCookie");
HttpCookie("myCookie");
DateTime
DateTime now
now == DateTime.Now;
DateTime.Now;
objCookie.Values.Add("Time",
objCookie.Values.Add("Time", now.ToString());
now.ToString());
objCookie.Values.Add("Time",
now.ToString());
objCookie.Values.Add("ForeColor",
"White");
objCookie.Values.Add("ForeColor",
"White");
objCookie.Values.Add("Time",
now.ToString());
objCookie.Values.Add("ForeColor",
"White");
objCookie.Values.Add("BackColor",
objCookie.Values.Add("BackColor", "Blue");
"Blue");
objCookie.Values.Add("ForeColor",
"White");
objCookie.Values.Add("BackColor",
objCookie.Values.Add("BackColor", "Blue");
"Blue");
objCookie.Expires
objCookie.Expires == now.AddHours(1);
now.AddHours(1);
Response.Cookies.Add(objCookie);
Response.Cookies.Add(objCookie);
Para crear una cookie
Response.Cookies.Add(objCookie);
Response.Cookies.Add(objCookie);

persistente, especificar
el tiempo de expiracin

La cookie contiene informacin sobre el nombre de dominio


Set-Cookie:
Set-Cookie: Username=John+Chen;
Username=John+Chen; path=/;
path=/;
domain=microsoft.com;
domain=microsoft.com;
Expires=Tuesday,
Expires=Tuesday, 01-Feb-05
01-Feb-05 00.00.01
00.00.01 GMT
GMT

***

Introduccin

Podemos crear cookies utilizando la propiedad Cookies del objeto Response y


la clase Request. La propiedad Cookies representa una coleccin de cookies y
es una instancia de la clase HttpCookieCollection.

Crear una cookie

El siguiente cdigo crea una nueva cookie denominada myCookie:

Visual Basic .NET

Dim objCookie As New HttpCookie("myCookie")


Dim now As DateTime = DateTime.Now

C#

HttpCookie objCookie = new HttpCookie("MyCookie");


DateTime now = DateTime.Now;

El siguiente cdigo agrega un par de claves y valores:


Visual Basic .NET

objCookie.Values.Add("Time", now.ToString())
objCookie.Values.Add("ForeColor", "White")
objCookie.Values.Add("BackColor", "Blue")

C#

objCookie.Values.Add("Time", now.ToString());
objCookie.Values.Add("ForeColor", "White");
objCookie.Values.Add("BackColor", "Blue");

Hacer una cookie


persistente

El siguiente cdigo establece en una hora el tiempo de expiracin de la cookie:

Visual Basic .NET

objCookie.Expires = now.AddHours(1)

C#

Administracin del estado


objCookie.Expires = now.AddHours(1);

31

32

Administracin del estado

Si no agregamos el cdigo anterior cuando creamos una cookie, sta ser una
cookie temporal. La cookie temporal se aade a la memoria del navegador, pero
no se almacenar en un archivo. Cuando el usuario cierra el explorador, la
cookie se elimina de la memoria.
Agregar el cdigo sobre el tiempo de expiracin convierte la cookie temporal
en una cookie persistente. La cookie persistente se guarda en el disco duro. Con
una cookie persistente, si el usuario cierra el explorador y lo abre de nuevo,
puede acceder a la misma pgina Web otra vez hasta que la cookie persistente
expire. La expiracin de la cookie persistente depende del tiempo de expiracin
establecido en el cdigo. En el cdigo anterior, la cookie persistente se
eliminar transcurrida una hora.
Nota Frecuentemente, las cookies persistentes a menudo se utilizan para
almacenar informacin sobre nombres e identificadores de usuario para que el
servidor pueda identificar a los usuarios cuando regresen al sitio Web.
El siguiente cdigo agrega la nueva cookie a la coleccin de cookies del objeto
Response:
Visual Basic .NET

Response.Cookies.Add(objCookie)

C#

Response.Cookies.Add(objCookie);

Cmo funcionan las


cookies

Supongamos que deseamos crear una cookie, denominada Username, que


contiene el nombre de un visitante a nuestro sitio Web. Para crear esta cookie,
el servidor Web enviar un encabezado HTTP como muestra el siguiente
cdigo:
Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com;
Expires=Tuesday, 01-Feb-05 00.00.01 GMT

El encabezado del cdigo de ejemplo anterior manda al navegador que agregue


una entrada a su archivo cookie. El explorador agrega la cookie, denominada
Username, con el valor John Chen.
El atributo domain del cdigo de ejemplo anterior limita el dominio dnde el
navegador puede enviar la cookie. En el cdigo de ejemplo anterior, la cookie
nicamente puede enviarse al sitio Web Microsoft.com. La cookie nunca se
enviar a ningn otro sitio Web de Internet.
Despus de que el servidor Web cree una cookie, el navegador la devuelve en
cada peticin que realiza a ese sitio Web. El explorador devuelve la cookie en
un encabezado similar al siguiente:
Cookie: Username: John+Chen

Las cookies que se almacenan en formato de archivo de texto son las cookies
persistentes. De forma predeterminada, este archivo se almacena en la carpeta
\Documents and Settings\NombreUsuario\Cookies.
Cuando las cookies persistentes se almacenan utilizando Internet Explorer, el
formato del archivo de texto es:
NombreUsuario@NombreDominio.txt

Administracin del estado

33

Prctica dirigida por el instructor: utilizar variables y cookies

Los estudiantes:
z

Aprendern a utilizar las variables de


aplicacin y de sesin, y las cookies
persistentes, para almacenar informacin
del usuario

Tiempo: 15 Minutos

***

Introduccin

En esta prctica, veremos cmo se utilizan las variables de aplicacin y de


sesin, y las cookies persistentes, para almacenar informacin del usuario.

Probar la funcionalidad

Iniciar sesin en la aplicacin Web


1. Abrir Internet Explorer e ir a:
http://mquinaprofesor/Mod14VB/default.aspx o
http://mquinaprofesor/Mod14CS/default.aspx.
2. Escribir nuestro nombre en el cuadro de texto, seleccionar un color del
cuadro de lista desplegable y hacer clic en Submit.
Seremos redireccionados a results.aspx, que muestra nuestro nombre, color
seleccionado y la fecha y hora en que accedimos por ltima vez a
default.aspx. results.aspx tambin muestra el nmero de visitantes.
3. Actualizar el explorador varias veces.
Cada actualizacin produce un aumento en el nmero de visitantes, pero
nuestro nombre y seleccin de color permanecen.
4. Cerrar Internet Explorer.
5. Volver a abrir Internet Explorer e ir a:
http://mquinaprofesor/Mod14VB/results.aspx o
http://mquinaprofesor/Mod14CS/results.aspx.
Aparece nuestro nombre, pero el color que escogimos anteriormente no se
muestra. La fecha y hora de nuestro ltimo acceso a default.aspx tambin se
muestra.

34

Administracin del estado

6. Cerrar Internet Explorer.


Por qu se recuerda nuestro nombre cuando volvemos a visitar el sitio,
pero no el color seleccionado?
_____________________________________________________________
_____________________________________________________________
Cmo hace la pgina el seguimiento del nmero de visitantes?
_____________________________________________________________
_____________________________________________________________

Visualizar el cdigo
1. En el cuadro de direccin de Windows Explorer, escribir:
\\mquinaprofesor\c$\inetpub\wwwroot\mod14VB o
\\mquinaprofesor\c$\inetpub\wwwroot\mod14CS
Y pulsar ENTER.
2. Abrir la pgina de cdigo subyacente de la pgina Default.aspx.
Qu dos acciones se producen en el procedimiento de evento
btnSubmit_Click?
_____________________________________________________________
_____________________________________________________________
3. En Windows Explorer, hacer doble clic en results.aspx.vb o results.aspx.cs
para abrir el archivo de pgina de cdigo subyacente results.aspx en
Visual Studio .NET.
En el procedimiento de evento Page_Load, cmo se almacena el nmero
de visitas en la pgina almacenada?
_____________________________________________________________
_____________________________________________________________
Por qu el cdigo se ubica en una instruccin If en el procedimiento de
evento Page_Load?
_____________________________________________________________
_____________________________________________________________
4. Cerrar Visual Studio .NET.

Administracin del estado

35

Visualizar la cookie
1. En Windows Explorer, ir al siguiente directorio del equipo:
c:\Documents and Settings\Student\Cookies
<<Note>>

Nota Si se ha iniciado sesin con un nombre de usuario distinto de Student,


ir a la carpeta Cookies de esa cuenta de usuario.
2. Hacer doble clic para abrir la cookie denominada
student@equipoinstructor[n].txt, siendo n un nmero de instancia.
Qu informacin podemos encontrar en esta cookie?
____________________________________________________________
____________________________________________________________
3. Cerrar Notepad y Windows Explorer.

36

Administracin del estado

Recuperar informacin de una cookie

Leer la cookie

Dim
Dim objCookie
objCookie As
As HttpCookie
HttpCookie == Request.Cookies("myCookie")
Request.Cookies("myCookie")
HttpCookie
HttpCookie objCookie
objCookie == Request.Cookies["myCookie"];
Request.Cookies["myCookie"];

Recuperar valores de la cookie

lblTime.Text
lblTime.Text == objCookie.Values("Time")
objCookie.Values("Time")
lblTime.ForeColor
lblTime.ForeColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName __
(objCookie.Values("ForeColor"))
(objCookie.Values("ForeColor"))
lblTime.BackColor
lblTime.BackColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName __
(objCookie.Values("BackColor"))
(objCookie.Values("BackColor"))
lblTime.Text
lblTime.Text == objCookie.Values["Time"];
objCookie.Values["Time"];
lblTime.ForeColor
lblTime.ForeColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName
(objCookie.Values["ForeColor"]);
(objCookie.Values["ForeColor"]);
lblTime.BackColor
lblTime.BackColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName
(objCookie.Values["BackColor"]);
(objCookie.Values["BackColor"]);

***

Introduccin

Recuperar informacin de una cookie implica leer una cookie y recuperar los
pares clave/valor de la misma.

Leer una cookie

El cliente devuelve al servidor una cookie en un encabezado HTTP "Cookie:".


En este encabezado pueden aparecer mltiples cookies, separadas por punto y
coma. Para leer una cookie existente, podemos acceder a la coleccin de
cookies del objeto Request, como muestra el siguiente cdigo:

Visual Basic

Dim objCookie As HttpCookie = Request.Cookies("myCookie")

C#

HttpCookie objCookie = Request.Cookies["myCookie"];

Recuperar valores de la
cookie

El siguiente cdigo muestra los valores que deben recuperarse de una cookie:

Visual Basic .NET

lblTime.Text = objCookie.Values("Time")
lblTime.ForeColor = System.Drawing.Color.FromName _
(objCookie.Values("ForeColor"))
lblTime.BackColor = System.Drawing.Color.FromName _
(objCookie.Values("BackColor"))

C#

lblTime.Text = objCookie.Values["Time"];
lblTime.ForeColor = System.Drawing.Color.FromName
(objCookie.Values["ForeColor"]);
lblTime.BackColor = System.Drawing.Color.FromName
(objCookie.Values["BackColor"]);

Administracin del estado

37

Uso de sesiones que no utilizan cookies

Cada sesin activa est identificada y se realiza su


seguimiento utilizando IDs de sesin

Los IDs de sesin se comunican entre peticiones


cliente-servidor utilizando una cookie HTTP o
incluyndolos en la URL

Sesiones que no utilizan cookies


z

La informacin de ID de sesin est codificada en URLs

http://server/(h44a1e55c0breu552yrecobl)/page.aspx
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
z

No pueden utilizar URLs absolutas

La mayora de navegadores limitan el tamao de la URL


a 255 caracteres, lo cual limita el uso de IDs para las
sesiones que no utilizan cookies

***

Introduccin

Cada sesin activa est identificada y se realiza su seguimiento utilizando un


identificador de sesin SessionID. El SessionID se comunica entre peticiones
cliente-servidor utilizando una cookie HTTP o incluyndolo en la URL. De
forma predeterminada, SessionID se almacena en cookies.
Sin embargo, los usuarios pueden deshabilitar cookies mediante una
configuracin en sus navegadores. Si la cookie no puede agregarse al navegador
de un usuario, cada peticin que realice el usuario iniciar una nueva sesin de
usuario. Los datos de sesin asociados a ese usuario se pierden cuando se
solicita una nueva pgina.

Sesiones que no utilizan


cookies

El marco de trabajo de las pginas ASP.NET incluye una opcin que habilita
sesiones que no utilizan cookies. Las sesiones que no utilizan cookies permiten
aprovechar el estado de sesin incluso con navegadores que tienen
deshabilitado el soporte de cookies.
Cuando un usuario realiza la primera peticin a un sitio Web teniendo
habilitado sesiones que no utilizan cookies, la URL que se utiliza para la
peticin se modifica automticamente para incluir el SessionID del usuario. Por
ejemplo, cuando un usuario solicita http://server/page.aspx, la solicitud se
modifica automticamente a:
http://server/(h44a1e55c0breu552yrecobl)/page.aspx

la parte de la URL que aparece en parntesis es el SessionID del usuario actual.


Despus de que el SessionID se incluya en la URL de la peticin de la primera
pgina, el SessionID hace seguimiento del usuario durante su visita al sitio
Web.

38

Administracin del estado

Limitacin de las
sesiones que no utilizan
cookies

Existen algunas limitaciones en el uso sesiones que no utilizan cookies:

Si decidimos utilizar sesiones que no utilizan cookies, no podemos utilizar


URLs absolutas para los enlaces entre pginas. El sitio Web debe disearse
de forma que cada enlace utilice una URL relativa a la pgina actual.

La mayora de navegadores limitan el tamao de la URL a 255 caracteres.

Administracin del estado

39

Configuracin de sesiones que no utilizan cookies

El estado de sesin se configura en la seccin


<SessionState> de Web.config

Configurar cookieless = true

<sessionState
<sessionState cookieless="true"
cookieless="true" />
/>

***

Introduccin

Para habilitar sesiones que no utilizan cookies, es necesario modificar un nico


atributo del archivo Web.config.

Configurar una sesin


que no utiliza cookies

En la seccin <sessionstate> del archivo Web.config, el atributo cookieless


est establecido al valor true. Para habilitar sesiones que no utilizan cookies, lo
nico que debemos hacer es establecer este valor, como muestra el siguiente
cdigo:
<sessionState cookieless="true" />

También podría gustarte