Sunteți pe pagina 1din 41

Administración del estado

Índice

Descripción 1
Lección: administración del estado 2
Lección: variables de aplicación y de sesión 17
Lección: cookies y sesiones que no utilizan cookies 29
Administración del estado 1

Descripción

„ Administración del estado


„ Variables de aplicación y de sesión
„ Cookies y sesiones que no utilizan cookies

***

Introducción Microsoft® ASP.NET permite administrar el estado de una aplicación Web. El


estado es la capacidad de una aplicación Web de conservar la información del
usuario.
En este módulo, estudiaremos cómo administrar el estado de una aplicación
Web ASP.NET.
Objetivos En este módulo, aprenderemos a:
„ Describir la administración del estado y las distintas opciones disponibles
para administrar el estado en una aplicación Web ASP.NET.
„ Utilizar variables de aplicación y de sesión 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.
2 Administración del estado

Lección: administración del estado

„ ¿Qué es la administración del estado?


„ Tipos de administración del estado
„ Administración del estado en el lado del servidor
„ Administración del estado en el lado del cliente
„ El archivo Global.asax

***

Introducción La conexión que se establece entre un usuario (el equipo cliente) y un servidor
Web se denomina sesión. Las sesiones pueden abarcar múltiples páginas Web y
su seguimiento se realiza mediante la administración del estado.
La administración del estado es el proceso por el cual mantenemos la misma
información a través de múltiples peticiones para las mismas o distintas páginas
Web.
En esta lección, empezaremos a conocer en detalle qué es la administración del
estado y por qué es importante administrar el estado. Estudiaremos la
administración del estado en el lado del servidor y la administración del estado
en el lado del cliente. También estudiaremos el archivo global.asax.
Objetivos de la lección En esta lección, aprenderemos a:
„ Describir la administración del estado.
„ Identificar los distintos tipos de opciones de administración del estado.
„ Describir la administración del estado en el lado del servidor.
„ Describir la administración del estado en el lado del cliente.
„ Describir los distintos eventos que controla el archivo global.asax.
Administración del estado 3

¿Qué es la administración del estado?

Sin administración del Con administración del


estado estado
Login.aspx Login.aspx
Introduzca su información Introduzca su información
de inicio de sesión: de inicio de sesión:
Nombre Nombre
John John
Apellido Apellido
Chen Chen

Enviar Enviar Servidor Web


Enviar Servidor Web Enviar
Greetings.aspx Greetings.aspx
Hola
Hola John Chen

¡¡He
¡¡Heolvidado
olvidado
quién
quiéneres!!
eres!!

***

Introducción Al igual que las tecnologías basadas en Hypertext Transfer Protocol (HTTP),
los formularios Web Forms no tienen estado, lo que significa que no indican
automáticamente si las peticiones de una secuencia son todas del mismo cliente
ni si una única instancia de navegador sigue visualizando de forma activa una
página Web o un sitio Web. Además, las páginas Web se destruyen y vuelven a
crearse a continuación con cada nueva petición al servidor Web; por tanto, la
información de las páginas no existe más allá del ciclo de vida de una única
página.
Administración del ASP.NET ofrece una administración del estado que guarda información en el
estado servidor entre páginas, que ayuda a mantener la continuidad de la información
del usuario (estado) durante una visita a un sitio Web.
Si se mantiene el estado entre páginas, la información suministrada
originalmente por los usuarios puede ser reutilizada; por ello, los usuarios no
necesitan volver a introducir la misma información varias veces cada vez que se
envía una página de retorno al servidor.
Ejemplo Por ejemplo, en la ilustración anterior, el usuario, John Chen, introduce su
nombre en el formulario login.aspx. Después de introducir sus datos personales,
esa información se envía al servidor y se muestra la página siguiente, el
formulario greetings.aspx. Sin administración del estado, la información que el
usuario ha introducido en la primera página se ha perdido.
Sin embargo, si se utiliza administración del estado en la aplicación Web, puede
mantenerse el estado a través de varias páginas Web. Por tanto, cuando la
información personal del usuario se envía al servidor, la segunda página, el
formulario greetings.aspx, da la bienvenida al usuario con su nombre, John
4 Administración del estado

Chen, que el usuario introdujo en el formulario login.aspx, la primera página de


la aplicación Web.
Administración del estado 5

Tipos de administración del estado

Administració
Administración del estado en Administració
Administración del estado en
el lado del servidor el lado del cliente
Estado de la aplicación Cookies
„ La información está disponible „ Archivo de texto que almacena
para todos los usuarios de una información para mantener el
aplicación Web estado

Estado de sesión Propiedad ViewState


„ La información está disponible
„ Conserva valores entre múltiples
únicamente para el usuario de una
peticiones para la misma página
sesión específica

Base de datos Cadenas de consulta


„ En algunos casos, se utiliza el
„ Información añadida al final de
soporte de base de datos para
una URL
mantener el estado en el sitio Web

***

Introducción ASP.NET proporciona dos tipos de administración del estado que pueden
utilizarse para mantener el estado entre envíos y respuestas al servidor. La
elección de uno de los dos tipos de administración del estado disponibles en
ASP.NET depende principalmente de la naturaleza de la aplicación Web.
Administración del Los dos tipos de administración del estado son:
estado en el lado del
cliente y en el lado del „ Lado servidor
servidor Las opciones de la administración del estado en el lado del servidor utilizan
recursos del servidor para almacenar la información del estado. La
seguridad de estas opciones es mayor que en el lado del cliente.
„ Lado cliente
La administración del estado en el lado del cliente no utiliza recursos del
servidor para almacenar la información del estado. Las opciones en el lado
del cliente tienden a tener seguridad mínima, pero ofrecen un rápido
rendimiento del servidor porque no existe demanda en el servidor para
mantener el estado.

Lado servidor La administración del estado en el lado del servidor contiene diferentes
opciones a escoger, incluyendo:
„ Estado de aplicación
En el estado de aplicación, la información está disponible para todos los
usuarios de una aplicación Web; por ejemplo, almacenar el número de
visitantes a una aplicación Web.
„ Estado de sesión
6 Administración del estado

En el estado de sesión, la información está disponible únicamente para un


usuario de una sesión específica de una aplicación Web; por ejemplo,
almacenar el esquema de colores preferido de un usuario.
Administración del estado 7

„ Base de datos Microsoft SQL Server™ o un servidor de estado


Otra opción de la administración del estado en el lado del servidor es utilizar
la tecnología de bases de datos. Podemos utilizar una base de datos SQL
Server o un servidor de estado para almacenar información específica del
usuario cuando el almacén de información es de gran tamaño. La base de
datos SQL Server o un servidor de estado pueden utilizarse conjuntamente
con el estado de sesión y cookies.
„ El objeto Cache
También podemos utilizar el objeto Cache para administrar el estado a nivel
de aplicación.

Lado cliente La administración del estado en el lado del cliente también ofrece distintas
opciones para mantener el estado. Estas opciones incluyen:
„ Cookies
Una cookie es un archivo de texto que puede utilizarse para almacenar
pequeñas cantidades de información necesarias para mantener el estado.
„ La propiedad ViewState
Los formularios Web Forms proporcionan la propiedad ViewState como
una estructura incluida para conservar automáticamente valores entre
múltiples peticiones a la misma página. La propiedad ViewState se
mantiene como un campo oculto en la página.
„ Cadenas de consulta
Una cadena de consulta es información que se añade al final de una URL
(Uniform Resource Locator). Un ejemplo típico podría 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
interrogación (?) e incluye dos pares atributo-valor, categoría y precio.

Nota Este módulo cubre información que pertenece únicamente a cookies.


Para más información sobre ViewState y cadenas de consulta, consultar la
documentación de Microsoft Visual Studio® .NET.
8 Administración del estado

Administración del estado en el lado del servidor

„ El estado de la aplicación es un mecanismo de almacenamiento


global accesible desde todas las páginas de la aplicación Web
„ El estado de sesión está limitado a la sesión de explorador
actual
z Los valores se conservan mediante el uso de variables de
aplicación y de sesión
z Escalabilidad
„ La sesión ASP.NET se identifica con la cadena SessionID
Servidor Web
Equipo cliente
Variables de
aplicación y de sesión
SessionID

***

Introducción ASP.NET ofrece varias opciones para administrar el estado en el lado del
servidor. Los estados de aplicación y de sesión son dos de estas opciones. Esta
sección trata de los estados de aplicación y de sesión en mayor detalle.
Estado de aplicación ASP.NET proporciona el estado de aplicación utilizando una instancia de la
clase HttpApplicationState para cada aplicación Web activa. El estado de
aplicación es un mecanismo de almacenamiento global al que se puede acceder
desde todas las páginas de la aplicación Web, y por tanto es útil para almacenar
información del usuario que debe preservarse entre transferencias al servidor y
viajes entre páginas.
El estado de la aplicación es una estructura de diccionario clave-valor que se
crea en cada petición a una URL específica. Podemos agregar la información
específica de la aplicación a esta estructura para almacenarla entre peticiones de
páginas. Después de agregar la información específica de aplicación al estado
de la aplicación, el servidor la gestiona.
Variables de aplicación ASP.NET proporciona las variables de aplicación que mantienen el estado de
aplicación. Los datos ideales para insertar en variables de aplicación son los
datos compartidos por múltiples sesiones y que no cambian a menudo.
Estado de sesión ASP.NET proporciona estado de sesión utilizando una instancia de la clase
HttpSessionState para cada sesión de aplicación Web activa.
El estado de sesión es similar al estado de aplicación, salvo en que está limitado
a la sesión actual del navegador. Si distintos usuarios están utilizando una
aplicación Web, cada usuario tendrá un estado de sesión distinto. Además, si el
mismo usuario abandona la aplicación Web y regresa más tarde, ese usuario
también tendrá un estado de sesión distinto al que tenía antes.
Administración del estado 9

El estado de sesión está almacenado como una estructura de diccionario clave-


valor que se utiliza par almacenar información específica de la sesión que debe
mantenerse entre transferencias de páginas al servidor y entre peticiones de
páginas. Tras agregar la información específica de la aplicación al estado de
sesión, el servidor la gestiona. Podemos configurar ASP.NET para
automáticamente serialice y almacene la información de sesión en una base de
datos SQL Server o en un servidor de estado.
Variables de sesión ASP.NET proporciona las variables de sesión necesarias para mantener el
estado de sesión. Los datos ideales para almacenar en las variables de estado de
sesión son datos fugaces o confidenciales, específicos de una sesión individual.

Nota Los estados de aplicación y de sesión se implementan como una tabla


hash, y almacenan datos basándose en combinaciones de pares clave/valor. Una
tabla hash es similar al concepto de un objeto dictionary.

Escalabilidad Con ASP.NET, el estado de sesión puede utilizarse tanto en configuraciones de


múltiples equipos como de múltiples procesos; optimizando por tanto los
escenarios de escalabilidad de una aplicación Web.
Identificar y hacer el Cada sesión de aplicación Web activa está identificada y monitorizada
seguimiento de una utilizando una cadena SessionID de 120 bits que únicamente contiene los
sesión caracteres ASCII permitidos en las URLs. Las cadenas SessionID están
comunicadas a través 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
configuración de la aplicación Web.
La administración 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, sólo lo que dura una sesión, el mecanismo que
ASP.NET utiliza para almacenar la información de sesión, en una base de datos
SQL Server o en un servidor de estado, también se utiliza para permitir que la
aplicación sea escalable, pero no para un almacenamiento a largo plazo. Si
deseamos implementar el almacenamiento a largo plazo de la información de
sesión del usuario, debemos requerir a los usuarios que introduzcan su
información personal, y deberemos implementar nuestra propia solución de
almacenamiento utilizando una base de datos que almacene permanentemente
la información personal de usuarios registrados.
10 Administración del estado

Administración del estado en el lado del cliente

„ Utiliza cookies para mantener el estado


z Cookies persistentes
z Cookies temporales/no persistentes
„ Menos fiable que las opciones de administración del estado en el lado del
servidor
z El usuario puede eliminar cookies
„ Menos seguro que las opciones de administración del estado en el lado
del servidor
„ Cantidad de información limitada
z Restricciones en el lado del cliente en el tamaño de los archivos Servidor Web
Equipo cliente

Cookies

***

Introducción La mayoría de aplicaciones Web utilizan cookies para la administración del


estado en el lado del cliente.
Cookies Una cookie es una pequeña cantidad de datos que se almacena en un archivo de
texto en el sistema de archivos del equipo cliente o en memoria en la sesión
cliente-navegador. Una cookie contiene información específica de la página que
el servidor envía al cliente, junto con la salida de la página.
Podemos utilizar cookies para almacenar información sobre un determinado
cliente, sesión o aplicación. Las cookies se almacenan en el equipo cliente, y
cuando el navegador solicita una página, envía la información de la cookie,
junto con la información solicitada. El servidor está autorizado a leer la cookie
y extraer su valor. Cada cookie contiene la información 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, también denominadas cookies de sesión o no
persistentes, existen únicamente en la memoria del navegador. Cuando el
éste se apaga, las cookies temporales que se han añadido se pierden.
„ Persistentes
Las cookies persistentes son similares a las cookies temporales, excepto en
que las cookies persistentes tienen un periodo de expiración fijo. Cuando un
navegador solicita una página 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 años, en el equipo cliente. Con
Microsoft Internet Explorer, las cookies persistentes se almacenan en un
Administración del estado 11

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


disco duro del cliente.
12 Administración del estado

Vencimiento Las cookies pueden expirar cuando finaliza la sesión del explorador (cookies
temporales), o pueden existir indefinidamente en el equipo cliente, dependiendo
de las reglas de expiración del cliente (cookies persistentes).
Los usuarios también pueden decidir eliminar cookies de su equipo antes de que
éstas expiren. Por tanto, no existe garantía 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
administración del estado en el lado del servidor. Las cookies también están
sujetas a la manipulación. Lo usuarios pueden manipular cookies en su equipo,
lo que puede representar potencialmente un compromiso de seguridad o puede
hacer que la aplicación que depende de la cookie pueda fallar.
Información limitada También existe un límite sobre cuánta información puede almacenarse en una
cookie ya que los equipos cliente tienen restricciones en el tamaño de los
archivos. Además, cada cookie individual puede contener una cantidad limitada
de información, no más de 4 kilobytes (KB).
Administración del estado 13

El archivo Global.asax

„ Sólo un archivo Global.asax por aplicación Web


„ Almacenado en la raíz del directorio virtual de la
aplicación Web
„ Utilizado para gestionar eventos de aplicación y de
sesión
„ El archivo Global.asax es opcional

***

Introducción El archivo global.asax es un archivo declarativo que se utiliza para la gestión de


eventos mientras la aplicación Web se está ejecutando.
Algunas de las características del archivo global.asax son:
„ Por cada aplicación Web ASP.NET se soporta un archivo global.asax.
„ El archivo global.asax se almacena en la raíz del directorio virtual de la
aplicación Web.
„ El archivo global.asax puede gestionar eventos de aplicación y de sesión
(inicio y final) que pueden utilizarse para inicializar variables de aplicación
y de sesión.
„ El archivo global.asax es opcional. Si no definimos el archivo, el marco de
trabajo de las páginas ASP.NET asume que no hemos definido ningún
controlador de eventos de aplicación o sesión.
14 Administración del estado

El archivo global.asax (continuación)

Cliente
Petición
Petición 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

Ejecución
Ejecución de
de la
la página
página

***

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


eventos mientras la aplicación Web se está ejecutando.
Categorías de eventos El archivo global.asax soporta tres categorías de eventos:
„ Eventos que se invocan cuando se solicita una página.
„ Eventos que se invocan cuando se envía la página solicitada.
„ Eventos de aplicación condicionales.

Eventos invocados La siguiente tabla lista los eventos que se invocan cuando se solicita una
cuando se solicita una página.
página
Nombre del evento Descripción

Application_BeginRequest Este evento se invoca cada vez que se


recibe una nueva petición.
Application_AuthenticateRequest Este evento indica que la petición está
preparada para ser autenticada.
Application_AuthorizeRequest Este evento indica que la petición está
preparada para ser autorizada.
Application_ResolveRequestCache Este evento es utilizado por el módulo de
la caché de salida para detener el
procesamiento de peticiones que han
sido almacenadas en caché.
Application_AcquireRequestState Este evento indica que debería obtenerse
el estado para cada petición.
Administración del estado 15

Application_PreRequestHandlerExecute Este evento indica que el gestor de


peticiones está a punto de ejecutarse.
16 Administración del estado

Eventos invocados Global.asax también incluye eventos invocados cuando la página solicitada se
cuando se envía la envía de vuelta al cliente. La siguiente tabla lista estos eventos.
página solicitada
Nombre del evento Descripción

Application_PostRequestHandlerExecute Este evento es el primero disponible


después de que el controlador, como
una página ASP.NET o un servicio
Web, haya finalizado su trabajo.
Application_ReleaseRequestState Este evento se invoca cuando el estado
de la petición debe almacenarse, porque
la aplicación Web ASP.NET finaliza
con él.
Application_UpdateRequestCache Este evento indica que el procesamiento
de código 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 aplicación
Web ASP.NET.

Eventos de aplicación Los eventos de aplicación condicionales son eventos que pueden o no ser
condicionales lanzados durante le procesamiento de una petición. La siguiente tabla muestra
algunos de los eventos de aplicación condicionales más habituales.
Nombre del evento Descripción

Application_Start Este evento se invoca cuando se inicia


una aplicación Web ASP.NET.
Application_End Este evento es otro evento de ocurrencia
única. Es el evento recíproco de
Application_Start; se invoca cuando se
cierra la aplicación Web ASP.NET.
Session_Start Este evento se invoca cuando se inicia la
Session de un usuario en una aplicación
Web ASP.NET.
Session_End Este evento es un evento reciproco de
Session_Start; este evento se invoca
cuando finaliza la sesión de un usuario.
Application_Error Este evento se invoca cuando ocurre un
error no controlado en una aplicación
Web ASP.NET.
Administración del estado 17

Lección: variables de aplicación y de sesión

„ Inicializar variables de aplicación y de sesión


„ Utilizar variables de aplicación y de sesión
„ Demostración: uso de las variables de sesión
„ Duración de las variables de aplicación y de sesión
„ Almacenamiento escalable de variables de aplicación y
de sesión
„ Almacenar las variables de aplicación y de sesión en
una base de datos

***

Introducción Podemos utilizar las variables de aplicación y de sesión para compartir


información entre las páginas de una aplicación Web ASP.NET. En esta
lección, estudiaremos cómo inicializar y utilizar las variables de aplicación y de
sesión. También estudiaremos cómo especificar la duración de las variables de
aplicación y de sesión y cómo afectan al almacenamiento escalable. Finalmente,
estudiaremos cómo almacenar las variables de aplicación y de sesión en una
base de datos.
Objetivos de la lección En esta lección, aprenderemos a:
„ Inicializar variables de aplicación y de sesión.
„ Establecer y leer variables de aplicación y de sesión.
„ Modificar la duración de la variable de aplicación y de sesión.
„ Describir los métodos en el proceso y fuera del proceso utilizados para
almacenar el estado de sesión.
„ Almacenar variables de aplicación y de sesión en una base de datos.
18 Administración del estado

Inicializar variables de aplicación y de sesión

„ Las variables se inicializan en Global.asax


z El objeto Application comparte información entre todos
los usuarios de una aplicación 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 información para una


sesión de usuario concreta

***

Introducción Inicializamos las variables de aplicación y de sesión en los procedimientos de


eventos Start de los objetos Application y Session del archivo global.asax.
Variables de sesión Utilizamos el objeto Session para almacenar la información necesaria de una
sesión de usuario concreta. Las variables que se almacenan en el objeto Session
no se desecharán cuando el usuario viaje por las distintas páginas de la
aplicación Web. En lugar de ello, estas variables persistirán durante toda la
sesión del usuario.
El siguiente código de ejemplo muestra cómo se utilizan las variables de sesión
para almacenar el esquema de colores preferido de una determinada sesión 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";
}
Administración del estado 19

Variables de aplicación Podemos utilizar el objeto Application para compartir información de estado
entre todos los usuarios de una aplicación Web. Cuando el primer usuario de la
aplicación Web solicita un archivo .aspx, se crea un objeto Application. El
objeto Application se destruye cuando todos los usuarios han abandonado la
aplicación Web y, a continuación, se descarga la aplicación Web.
Por ejemplo, podríamos almacenar el número total de visitantes de un sitio Web
en una variable de nivel de aplicación:
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 Administración del estado

Utilizar variables de aplicación y de sesión

„ Establecer variables de aplicación y sesión


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 aplicación y de sesión
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();

***

Introducción Para utilizar variables de aplicación y de sesión en ASP.NET, simplemente


utilizamos una clave de cadena y establecemos un valor.
Establecer variables de Para establecer la variable de sesión, debemos proporcionar una clave que
aplicación y de sesión identifique el elemento que estamos almacenando, utilizando una instrucción
como la siguiente:
Session("BackColor") = "blue"

La instrucción anterior agrega una clave, denominada BackColor, al estado de


sesión con el valor blue.
Puede accederse a las variables de aplicación en un entorno de múltiples
usuarios; por ello, cuando se actualicen los datos de Application, debemos
evitar que otros usuarios o aplicaciones actualicen los datos simultáneamente.
ASP.NET proporciona un sencillo conjunto de métodos de bloqueo,
Application.Lock() y Application.UnLock(), que pueden utilizarse para evitar
el acceso múltiple y simultáneo de la variable de aplicación. El siguiente código
muestra el uso de los métodos 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();
Administración del estado 21

Leer variables de Para utilizar una variable de sesión o de aplicación en una página ASP.NET,
aplicación y de sesión 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();
22 Administración del estado

Demostración: uso de las variables de sesión

„ Inicializar una variable de sesión (un


número) en global.asax
„ Acceder a la variable de sesión desde una
página
„ Acceder a la variable de sesión desde otra
página y modificarla
„ Volver a acceder a la variable de sesión
desde la primera página

***

Introducción En esta demostración, aprenderemos a utilizar variables de sesión.


El código para esta demostración se encuentra en los proyectos Demo12VB y
Demo12CS que se pueden encontrar dentro del fichero demos12.zip.

Ë Ejecutar la demostración
1. Abrir el proyecto Demo12VB o Demo12CS.
2. Abrir la página de código subyacente de global.asax.
3. Inicializar una variable de sesión, denominada intNumber a 3, agregando el
siguiente código 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 sesión y se muestra en el procedimiento de evento
Page_Load.
5. Generar y examinar la página UsingSessionVar1.aspx.
Se muestra el valor de la variable de sesión, 3.
6. Hacer clic en Next Page.
Se abre la página UsingSessionVar2.aspx, incrementa la variable de sesión
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 sesión.
Administración del estado 23

Duración de la variable de sesión y de aplicación

„ Las variables de sesión tienen una duración establecida


tras el último acceso
z 20 minutos es la duración predeterminada
„ La duración de la sesión 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 aplicación persisten hasta que se


provoca el evento Application_End

***

Introducción 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 página. En ese momento, el servidor Web asume que el
usuario ha abandonado el sitio Web y elimina todos los elementos del estado de
sesión asociados a ese usuario.
Duración De forma predeterminada, el tiempo de una sesión finaliza cuando un usuario
predeterminada de la no ha solicitado ninguna página durante más de 20 minutos. Si el mismo
sesión usuario solicita una página transcurridos 20 minutos, será tratado como un
nuevo usuario.

Nota Establecer duraciones de sesión más cortas permite al sitio Web ahorrar
recursos en el servidor Web. En cambio, si nuestra previsión es que el usuario
pase más de 20 minutos en nuestro sitio Web, deberíamos establecer una
duración de sesión más larga.

Modificar la duración de Podemos modificar la duración de la sesión en el archivo Web.config. Los


la sesión archivos Web.config son archivos Extensible Markup Language (XML)
estándares 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
duración de la sesión está establecida en 10 minutos:
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>
24 Administración del estado

Variable de aplicación Las variables de aplicación persisten hasta que se invoca el evento
Application_End. Application_End se invoca inmediatamente antes del final
de todas las instancias de la aplicación.
Administración del estado 25

Almacenamiento escalable de variables de aplicación y de sesión


y
„ Por defecto, el estado de sesión se administra en proceso (in process)
„ Inconveniente del almacenamiento en proceso:
z No escalable
„ ASP.NET proporciona almacenamiento fuera del proceso (out of process)
del estado de sesión
z El estado puede almacenarse en una base de datos SQL Server o un
servidor de estado
„ Ventajas del almacenamiento fuera del proceso: Servidor de estado

z Escalabilidad Granja Web

Variables de sesión y de aplicación

-O-

SQL
Cliente

Variables de sesión y de aplicación

***

Introducción Por defecto, el estado de sesión se administra en proceso (in process). En


proceso significa que toda la información que se agrega a un estado de sesión se
almacena en el mismo servidor Web que está ejecutando la aplicación Web
ASP.NET. Sin embargo, el almacenamiento en proceso del estado de sesión
tiene algunos inconvenientes importantes.
Inconveniente del Uno de los principales inconvenientes del almacenamiento del estado de sesión
almacenamiento en en proceso es que limita la escalabilidad de nuestro sitio Web. No podemos
proceso configurar múltiples servidores para gestionar peticiones.
Fuera de proceso ASP.NET ofrece dos métodos que pueden utilizarse para almacenar estado de
sesión fuera de proceso (out of process). Podemos:
„ Administrar el estado de sesión en una base de datos SQL Server.
„ Administrar el estado de sesión en un servidor de estado distinto.
Cualquier servidor basado en Microsoft Windows® puede ser un servidor de
estado.

Para almacenar el estado de sesión fuera de proceso, debemos modificar el


archivo Web.config para establecer el modo sessionstate con el valor sqlserver
o stateserver, y especificar la ubicación del servidor. La opción sqlserver es
similar a la opción stateserver, salvo en que en la primera la información
persiste en SQL Server en lugar de almacenarse en la memoria del equipo.
Ventaja del La principal ventaja de separar el almacenamiento del estado de sesión de la
almacenamiento fuera aplicación Web es que podemos utilizar un servidor de estado externo o un
de proceso equipo que ejecute SQL Server para almacenar el estado de sesión, haciendo
por tanto que la aplicación Web sea escalable. Para conseguir aplicaciones Web
26 Administración del estado

ASP.NET escalables, el estado de sesión debe estar compartido por múltiples


servidores que soporten el escenario de granja Web. En un escenario de granja
Web, múltiples servidores están configurados para gestionar las peticiones de
los usuarios y, en consecuencia, éstas pueden ser ruteadas dinámicamente desde
un servidor a otro sin perder las variables de aplicación y de sesión. Además,
las variables de sesión pueden recuperarse desde cualquier servidor de la granja
Web, ya que están almacenadas en un equipo distinto que ejecuta SQL Server o
en un servidor de estado.
Administración del estado 27

Almacenar variables de aplicación y de sesión en una base de


datos

„
1
1 Configurar el estado de sesión 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
2 A continuación, 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

***

Introducción Para almacenar variables de aplicación y de sesión en una base de datos SQL
Server o en un servidor de estado, debemos seguir los siguientes pasos:
1. Configurar el estado de sesión en el archivo Web.config del servidor Web.
2. Configurar el servidor SQL Server o el servidor de estado.

Configura el estado de En el archivo Web.config, debemos modificar la configuración para establecer


sesión en el archivo el atributo mode de sessionstate a sqlserver o stateserver. A confinuación,
Web.config de nuestro debemos modificar el atributo sqlconnectionstring para identificar el nombre
servidor Web ASP.NET 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 sesión en Web.config como muestra el siguiente código:
<sessionState mode="SQLServer"
sqlConnectionString="data source=SQLServerName;
Integrated security=true" />

Configurar el servidor Para configurar el servidor SQL Server, debemos utilizar la herramienta desde
SQL Server línea 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 aplicación y de sesión.
Para instalar la base de datos ASPState utilizado seguridad integrada, utilizar la
siguiente sintaxis:
28 Administración del estado

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

Importante Las opciones del comando OSQL son sensibles a mayúsculas.

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.
Administración del estado 29

Lección: sesiones con y sin cookies

„ Utilizar cookies para almacenar datos de sesión


„ Práctica dirigida por el instructor: utilizar variables y
cookies
„ Recuperar información de una cookie
„ Uso de sesiones que no utilizan cookies
„ Configurar sesiones que no utilizan cookies

***

Introducción Las cookies son un medio por el cual la aplicación Web que se ejecuta en el
servidor Web puede hacer que un cliente devuelva información al servidor Web
con cada solicitud HTTP. La devolución de información puede utilizarse para
mantener el estado con el cliente entre múltiples peticiones. Las cookies se
envían al cliente como parte del encabezado HTTP en una solicitud del cliente,
o se envían en una respuesta del servidor.
En esta lección, estudiaremos cómo utilizar cookies para almacenar datos de
sesión, y cómo recuperar esos datos de una cookie. También estudiaremos las
sesiones que no utilizan cookies y cómo se establecen.
Objetivos de la lección En esta lección, aprenderemos a:
„ Utilizar cookies para almacenar datos de sesión.
„ Recuperar información de una cookie.
„ Describir sesiones que no utilizan cookies.
„ Establecer una sesión que no utiliza cookies.
30 Administración del estado

Utilizar cookies para almacenar datos de sesión

„ Crear una cookie:


HttpCookie
HttpCookie objCookie
objCookie == new
new HttpCookie("myCookie");
HttpCookie("myCookie");
HttpCookie
DateTime objCookie
now
DateTime now
HttpCookie = == new HttpCookie("myCookie");
new
DateTime.Now;
= DateTime.Now;
objCookie 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",
objCookie.Values.Add("ForeColor",now.ToString());
objCookie.Values.Add("ForeColor",
objCookie.Values.Add("Time", "White");
"White");
now.ToString());
objCookie.Values.Add("ForeColor",
objCookie.Values.Add("BackColor",
objCookie.Values.Add("BackColor", "Blue");
objCookie.Values.Add("ForeColor", "White");
"Blue");
"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);
Response.Cookies.Add(objCookie); Para crear una cookie
Response.Cookies.Add(objCookie);
persistente, especificar
el tiempo de expiración

„ La cookie contiene información 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

***

Introducción Podemos crear cookies utilizando la propiedad Cookies del objeto Response y
la clase Request. La propiedad Cookies representa una colección de cookies y
es una instancia de la clase HttpCookieCollection.
Crear una cookie El siguiente código 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 código 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 El siguiente código establece en una hora el tiempo de expiración de la cookie:
persistente

Visual Basic .NET objCookie.Expires = now.AddHours(1)

C#
Administración del estado 31

objCookie.Expires = now.AddHours(1);
32 Administración del estado

Si no agregamos el código anterior cuando creamos una cookie, ésta será una
cookie temporal. La cookie temporal se añade 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 código sobre el tiempo de expiración 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 página Web otra vez hasta que la cookie persistente
expire. La expiración de la cookie persistente depende del tiempo de expiración
establecido en el código. En el código anterior, la cookie persistente se
eliminará transcurrida una hora.

Nota Frecuentemente, las cookies persistentes a menudo se utilizan para


almacenar información sobre nombres e identificadores de usuario para que el
servidor pueda identificar a los usuarios cuando regresen al sitio Web.

El siguiente código agrega la nueva cookie a la colección de cookies del objeto


Response:
Visual Basic .NET Response.Cookies.Add(objCookie)

C# Response.Cookies.Add(objCookie);

Cómo funcionan las Supongamos que deseamos crear una cookie, denominada Username, que
cookies 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
código:
Set-Cookie: Username=John+Chen; path=/; domain=microsoft.com;
Expires=Tuesday, 01-Feb-05 00.00.01 GMT

El encabezado del código 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 código de ejemplo anterior limita el dominio dónde el
navegador puede enviar la cookie. En el código de ejemplo anterior, la cookie
únicamente puede enviarse al sitio Web Microsoft.com. La cookie nunca se
enviará a ningún otro sitio Web de Internet.
Después de que el servidor Web cree una cookie, el navegador la devuelve en
cada petición 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
Administración del estado 33

Práctica dirigida por el instructor: utilizar variables y cookies

„ Los estudiantes:
z Aprenderán a utilizar las variables de
aplicación y de sesión, y las cookies
persistentes, para almacenar información
del usuario
„ Tiempo: 15 Minutos

***

Introducción En esta práctica, veremos cómo se utilizan las variables de aplicación y de


sesión, y las cookies persistentes, para almacenar información del usuario.
Probar la funcionalidad
Ë Iniciar sesión en la aplicación Web
1. Abrir Internet Explorer e ir a:
http://máquinaprofesor/Mod14VB/default.aspx o
http://máquinaprofesor/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 también muestra el número de visitantes.
3. Actualizar el explorador varias veces.
Cada actualización produce un aumento en el número de visitantes, pero
nuestro nombre y selección de color permanecen.
4. Cerrar Internet Explorer.
5. Volver a abrir Internet Explorer e ir a:
http://máquinaprofesor/Mod14VB/results.aspx o
http://máquinaprofesor/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 también se
muestra.
34 Administración del estado

6. Cerrar Internet Explorer.


¿Por qué se recuerda nuestro nombre cuando volvemos a visitar el sitio,
pero no el color seleccionado?
_____________________________________________________________

_____________________________________________________________

¿Cómo hace la página el seguimiento del número de visitantes?


_____________________________________________________________

_____________________________________________________________

Ë Visualizar el código
1. En el cuadro de dirección de Windows Explorer, escribir:
\\máquinaprofesor\c$\inetpub\wwwroot\mod14VB o
\\máquinaprofesor\c$\inetpub\wwwroot\mod14CS
Y pulsar ENTER.
2. Abrir la página de código subyacente de la página 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 página de código subyacente results.aspx en
Visual Studio .NET.
En el procedimiento de evento Page_Load, ¿cómo se almacena el número
de visitas en la página almacenada?
_____________________________________________________________

_____________________________________________________________

¿Por qué el código se ubica en una instrucción If en el procedimiento de


evento Page_Load?
_____________________________________________________________

_____________________________________________________________

4. Cerrar Visual Studio .NET.


Administración 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 sesión 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 número de instancia.
¿Qué información podemos encontrar en esta cookie?
____________________________________________________________

____________________________________________________________

3. Cerrar Notepad y Windows Explorer.


36 Administración del estado

Recuperar información 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"]);

***

Introducción Recuperar información 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 múltiples cookies, separadas por punto y
coma. Para leer una cookie existente, podemos acceder a la colección de
cookies del objeto Request, como muestra el siguiente código:
Visual Basic Dim objCookie As HttpCookie = Request.Cookies("myCookie")

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

Recuperar valores de la El siguiente código muestra los valores que deben recuperarse de una cookie:
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"]);
Administración del estado 37

Uso de sesiones que no utilizan cookies

„ Cada sesión activa está identificada y se realiza su


seguimiento utilizando IDs de sesión
„ Los IDs de sesión se comunican entre peticiones
cliente-servidor utilizando una cookie HTTP o
incluyéndolos en la URL
„ Sesiones que no utilizan cookies
z La información de ID de sesión está codificada en URLs
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
z No pueden utilizar URLs absolutas
z La mayoría de navegadores limitan el tamaño de la URL
a 255 caracteres, lo cual limita el uso de IDs para las
sesiones que no utilizan cookies

***

Introducción Cada sesión activa está identificada y se realiza su seguimiento utilizando un


identificador de sesión SessionID. El SessionID se comunica entre peticiones
cliente-servidor utilizando una cookie HTTP o incluyéndolo en la URL. De
forma predeterminada, SessionID se almacena en cookies.
Sin embargo, los usuarios pueden deshabilitar cookies mediante una
configuración en sus navegadores. Si la cookie no puede agregarse al navegador
de un usuario, cada petición que realice el usuario iniciará una nueva sesión de
usuario. Los datos de sesión asociados a ese usuario se pierden cuando se
solicita una nueva página.
Sesiones que no utilizan El marco de trabajo de las páginas ASP.NET incluye una opción que habilita
cookies sesiones que no utilizan cookies. Las sesiones que no utilizan cookies permiten
aprovechar el estado de sesión incluso con navegadores que tienen
deshabilitado el soporte de cookies.
Cuando un usuario realiza la primera petición a un sitio Web teniendo
habilitado sesiones que no utilizan cookies, la URL que se utiliza para la
petición se modifica automáticamente para incluir el SessionID del usuario. Por
ejemplo, cuando un usuario solicita http://server/page.aspx, la solicitud se
modifica automáticamente a:
http://server/(h44a1e55c0breu552yrecobl)/page.aspx

la parte de la URL que aparece en paréntesis es el SessionID del usuario actual.


Después de que el SessionID se incluya en la URL de la petición de la primera
página, el SessionID hace seguimiento del usuario durante su visita al sitio
Web.
38 Administración del estado

Limitación de las Existen algunas limitaciones en el uso sesiones que no utilizan cookies:
sesiones que no utilizan
cookies „ Si decidimos utilizar sesiones que no utilizan cookies, no podemos utilizar
URLs absolutas para los enlaces entre páginas. El sitio Web debe diseñarse
de forma que cada enlace utilice una URL relativa a la página actual.
„ La mayoría de navegadores limitan el tamaño de la URL a 255 caracteres.
Administración del estado 39

Configuración de sesiones que no utilizan cookies

„ El estado de sesión se configura en la sección


<SessionState> de Web.config
„ Configurar cookieless = true

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

***

Introducción Para habilitar sesiones que no utilizan cookies, es necesario modificar un único
atributo del archivo Web.config.
Configurar una sesión En la sección <sessionstate> del archivo Web.config, el atributo cookieless
que no utiliza cookies 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
código:
<sessionState cookieless="true" />

S-ar putea să vă placă și