Está en la página 1de 20

1

Prctica A: Almacenar datos de aplicacin y sesin


Logon Logon Page Page
Login.aspx Login.aspx Coho Winery

Benefits Benefits Home Home Page Page


Default.aspx Default.aspx

Registration Registration
Register.aspx Register.aspx

Menu Menu Component Component

Page Page Header Header


Header.ascx Header.ascx

ASPState

Class1.vb Class1.vb or or Class1.cs Class1.cs

Web. config

tempdb

Life Life Insurance Insurance


Life.aspx Life.aspx

Retirement Retirement
Retirement.aspx Retirement.aspx

Medical Medical

Medical.aspx Medical.aspx

Dental Dental

Dental.aspx Dental.aspx

Lab Web Application

Prospectus Prospectus
Prospectus.aspx Prospectus.aspx

Doctors Doctors

Doctors.aspx Doctors.aspx

User User Control


namedate.ascx namedate.ascx

XML XML Web Web Service Service

dentalService1.asmx dentalService1.asmx

XML Files
*****************************

Doctors

Dentists

Objetivos

En este laboratorio, aprenderemos a:

Crear variables de sesin y de aplicacin y utilizarlas para almacenar y recuperar informacin. Crear, leer y escribir desde cookies persistentes. Almacenar variables de sesin en una base de datos Microsoft SQL Server.

Nota Este laboratorio se centra en los conceptos de este mdulo. Por ello, podra no cumplir las recomendaciones de seguridad de Microsoft. Requisitos previos Para trabajar en este laboratorio, es necesario tener:

Conocimientos sobre cmo crear variables de sesin y de aplicacin. Conocimientos sobre cmo crear cookies.

Escenario

Coho Winery ofrece varios beneficios a sus empleados. En los laboratorios de este curso, crearemos un sitio Web que permita a los empleados seleccionar y configurar los beneficios que elijan. En este laboratorio, utilizaremos variables de sesin y de aplicacin para mejorar la experiencia de los usuarios cuando navegan por el sitio Web Benefits.

Tiempo estimado para completar el laboratorio: 90 minutos

Ejercicio 0 Configuracin del laboratorio


Para realizar este laboratorio, es necesario haber creado el proyecto de la aplicacin Web Benefits y el proyecto de la biblioteca de clases BenefitsList. Estos proyectos pueden haberse creado utilizando Visual Basic .NET o Microsoft Visual C# .NET. Si no se han creado estos proyectos, realizar los siguientes pasos:

Crear la solucin LabApplication


Importante Realizar este procedimiento nicamente si no se ha creado un archivo de solucin LabApplication. 1. Utilizando Visual Studio .NET, crear una nueva solucin en blanco denominada LabApplication: a. En el men Archivo, seleccionar Nuevo, y hacer clic en Solucin en blanco. b. En el cuadro de dilogo Nuevo proyecto, escribir LabApplication en el cuadro de texto Nombre y hacer clic en Aceptar.

Crear el proyecto Benefits


Importante Realizar este procedimiento nicamente si no se ha creado anteriormente un proyecto Benefits, o si se ha eliminado. 1. Crear un nuevo proyecto de aplicacin Web ASP.NET, denominado BenefitsVB o BenefitsCS, en la solucin LabApplication: a. En el men Archivo, seleccionar Nuevo, y hacer clic en Proyecto. b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto, hacer clic en Proyectos de Visual Basic o Proyectos de Visual C#. c. En la lista Plantillas, hacer clic en Aplicacin Web ASP.NET, establecer la ubicacin en http://localhost/BenefitsVB para el proyecto Visual Basic .NET o en http://localhost/BenefitsCS para el proyecto Visual C#. d. Hacer clic en Agregar a Solucin, y hacer clic en Aceptar. Precaucin Cuando se agregan proyectos a la solucin, es importante el uso de maysculas en el nombre del proyecto. Probablemente, utilizaremos algunos formularios Web Forms ya generados en ste y en otros laboratorios, por ello, debemos verificar que hemos escrito con maysculas el nombre del proyecto Benefits.

Actualizar el proyecto Benefits


1. En Visual Studio .NET, abrir el archivo de solucin LabApplication. 2. En el Explorador de soluciones, hacer clic con el botn derecho en BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en Agregar elemento existente. 3. Buscar los archivos de proyecto: Para el proyecto Visual Basic .NET Para el proyecto Visual C# Ir a la carpeta VB\Starter\BenefitsVB. Ir a la carpeta CS\Starter\BenefitsCS. Estas carpetas pueden encontrarse dentro del fichero labs12.zip 4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento existente Benefits, hacer clic en Todos los archivos (*.*). 5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir. 6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.

Crear la biblioteca de clases BenefitsList


Importante Realizar este procedimiento nicamente si no se ha creado anteriormente un proyecto BenefitsList, o si se ha eliminado. 1. Crear un nuevo proyecto de biblioteca de clases. Para el proyecto Visual Basic .NET Crear un nuevo proyecto de biblioteca de clases Visual Basic .NET con el nombre BenefitsListVB, y agregarlo a la solucin LabApplication: a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto. b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto, hacer clic en Proyectos de Visual Basic. c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el Nombre de BenefitsListVB. d. Hacer clic en Agregar a solucin, y clic en Aceptar. Para el proyecto Visual C# Crear un nuevo proyecto de biblioteca de clases Visual C# .NET con el nombre BenefitsListCS, y agregarlo a la solucin LabApplication: a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto. b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto, hacer clic en Proyectos de Visual C#. c. En la lista Plantillas, hacer clic en Biblioteca de clases, establecer el Nombre de BenefitsListCS. a. Hacer clic en Agregar a solucin, y clic en Aceptar. Precaucin Verificar que se han escrito correctamente las maysculas del proyecto BenefitsList.

Actualizar el proyecto BenefitsList


1. En Visual Studio .NET, abrir el archivo de solucin LabApplication. 2. En el Explorador de soluciones, hacer clic con el botn derecho en BenefitsListVB o BenefitsListCS, seleccionar Agregar y hacer clic en Agregar elemento existente. 3. Ir al proyecto BenefitsList. Para el proyecto Visual Basic .NET Para el proyecto Visual C# Ir a la carpeta VB\Starter\BenefitsListVB. Ir a la carpeta CS\Starter\BenefitsListCS. Estas carpetas pueden encontrarse dentro del fichero labs12.zip 4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento existente BenefitsList, hacer clic en Todos los archivos (*.*). 5. Seleccionar todos los archivos de la carpeta y hacer clic en Abrir. 1. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos.

Crear una referencia al componente BenefitsList del proyecto Benefits


1. En el proyecto Benefits de la solucin LabApplication, completar los siguientes pasos para agregar una referencia al componente BenefitsList que acabamos de crear: a. Hacer clic con el botn derecho en el proyecto BenefitsVB o BenefitsCS en el Explorador de soluciones y hacer clic en Agregar referencia. b. En el cuadro de dilogo Agregar referencia, en la pestaa Proyectos, hacer doble clic en el proyecto BenefitsListVB o BenefitsListCS. c. En la lista Componentes seleccionados, seleccionar el componente BenefitsListVB o BenefitsListCS, y hacer clic en Aceptar. El componente se agrega a la carpeta Referencias en el Explorador de soluciones.

Crear el Servicio Web XML Dental


Importante Realizar este procedimiento nicamente si no se ha creado anteriormente el proyecto DentalService, o si se ha eliminado el proyecto DentalService siguiendo los pasos del Apndice A Recuperacin del laboratorio. 1. Crear un nuevo proyecto de Servicio Web XML. Para el proyecto Visual Basic .NET Crear un nuevo proyecto de Servicio Web XML en Visual Basic .NET, denominado DentalServiceVB, y agregarlo a la solucin LabApplication: a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto. b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto, hacer clic en Proyectos de Visual Basic. c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y establecer la ubicacin en http://localhost/DentalServiceVB. d. Hacer clic en Agregar a solucin, y clic en Aceptar.

Precaucin Verificar que se han utilizado correctamente las maysculas en el proyecto DentalServiceVB. Para el proyecto Visual C# .NET Crear un nuevo proyecto de Servicio Web XML Visual C#, denominado DentalServiceCS, y agregarlo a la solucin LabApplication: a. En el men Archivo, seleccionar Nuevo y hacer clic en Proyecto. b. En el cuadro de dilogo Nuevo proyecto, en la lista Tipos de proyecto, hacer clic en Proyectos de Visual Basic. c. En la lista Plantillas, hacer clic en Servicio Web ASP.NET, y establecer la ubicacin en http://localhost/DentalServiceCS. d. Hacer clic en Agregar a solucin, y clic en Aceptar. Precaucin Verificar que se han utilizado correctamente las maysculas en el proyecto DentalServiceVB.

Actualizar el proyecto DentalService


1. En Visual Studio .NET, abrir el archivo de solucin LabApplication. 2. En el Explorador de soluciones, hacer clic con el botn derecho en DentalServiceVB o DentalServiceCS, seleccionar Agregar, y hacer clic en Agregar elemento existente. 3. Buscar los archivos de proyecto: Para el proyecto Visual Basic .NET Para el proyecto Visual C# .NET Ir a la carpeta VB\Starter\DentalServiceVB. Ir a la carpeta CS\Starter\DentalServiceCS. Estas carpetas pueden encontrarse dentro del fichero labs12.zip 4. En el cuadro Archivos de tipo del cuadro de dilogo Agregar elemento existente DentalService, hacer clic en Todos los archivos (*.*). 5. Seleccionar todos los archivos de esta carpeta y hacer clic en Abrir. 6. Hacer clic en S a la pregunta de si sobrescribir o recargar los archivos. 7. Generar el servicio Web XML DentalService haciendo clic con el botn derecho en el proyecto DentalServiceVB o DentalServiceCS en el Explorador de soluciones y hacer clic en Generar.

Agregar una referencia Web en el proyecto Benefits al servicio Web


DentalService 1. En el proyecto Benefits de la solucin LabApplication, realizar los siguientes pasos para agregar una referencia Web al servicio Web XML DentalService: a. En el Explorador de soluciones, hacer clic con el botn derecho en BenefitsVB o BenefitsCS y clic en Agregar referencia Web. b. En el cuadro de texto Direccin, escribir: http://localhost/DentalServiceVB/DentalService1.asmx o http://localhost/DentalServiceCS/DentalService1.asmx y pulsar ENTER. Se mostrar la referencia Web DentalService. c. Hacer clic en Agregar referencia. La referencia Web se agrega al proyecto en la carpeta Referencias Web. 2. En el Explorador de soluciones, expandir Referencias Web, hacer clic con el botn derecho en localhost, y seleccionar Cambiar nombre. 3. Escribir DentalWebRef, y pulsar ENTER. 4. Generar la solucin haciendo clic en Generar solucin en el men Generar.

Ejercicio 1 Utilizar variables de sesin


En este ejercicio, almacenaremos el nombre y la fecha de nacimiento del usuario en variables de sesin. Tanto el control de usuario namedate.ascx como la pgina life.aspx buscarn las variables de sesin y rellenarn los cuadros de texto adecuados con la informacin, si est disponible. Si las variables de sesin no existen todava, una de las pginas las crear. Escenario En la aplicacin Web actual, un usuario debe introducir informacin redundante en mltiples pginas. Por ejemplo, el usuario debe suministrar su nombre y fecha de nacimiento en la pgina mdica y en la pgina de seguro de vida. Para simplificar el uso de la aplicacin Web, utilizaremos una cookie para almacenar esta informacin en variables de sesin y as el usuario slo deber introducir esta informacin una nica vez.

Obtener y establecer variables de sesin en life.aspx


1. En Visual Studio .NET, abrir la pgina de cdigo subyacente life.aspx del proyecto Benefits. 2. Agregar cdigo al procedimiento de evento Page_Load que obtiene las variables de sesin Name y Birth. 3. Establecer la propiedad Text del cuadro de texto txtName con el contenido de la variable de sesin Name, y establecer la propiedad Text del cuadro de texto txtBirth con el contenido de la variable de sesin Birth. 4. El cdigo debera ser similar al siguiente: Visual Basic .NET
If Not (Page.IsPostBack) Then Dim strName As String = CStr(Session("Name")) Dim strBirth As String = CStr(Session("Birth")) txtName.Text = strName txtBirth.Text = strBirth End If if (!Page.IsPostBack) { string strName = (string)Session["Name"]; string strBirth = (string)Session["Birth"]; txtName.Text = strName; txtBirth.Text = strBirth; }

Visual C#

5. En el procedimiento de evento cmdSave_Click, buscar el siguiente comentario: Visual Basic .NET Visual C#
'TODO Lab 14: Set Session variables //TODO Lab 14: Set Session variables

Nota Si esta seccin de cdigo no se encuentra en nuestro archivo life.aspx, podemos copiar el cdigo del archivo life.aspx en la carpeta VB\Starter\BenefitsVB o CS\Starter\BenefitsCS. Estos archivos pueden encontrarse dentro del fichero labs12.zip

6. Agregar el cdigo bajo este comentario que asigna el texto del cuadro de texto txtName a la variable de sesin Name, y asigna el texto del cuadro de texto txtBirth a la variable de sesin Birth. 7. El cdigo debera ser similar al siguiente: Visual Basic .NET Visual C#
Session("Name") = txtName.Text Session("Birth") = txtBirth.Text Session["Name"] = txtName.Text; Session["Birth"] = txtBirth.Text;

Obtener y establecer variables de sesin en la pgina de cdigo


subyacente namedate.ascx 1. Abrir namedate.ascx.vb o namedate.ascx.cs. ste es el control de usuario que muestra el nombre y la fecha de nacimiento en el formulario Web Form medical.aspx. 2. Agregar cdigo al procedimiento de evento Page_Load que recupera las variables de sesin Name y Birth. 3. Establecer la propiedad Text para el cuadro de texto txtName con el contenido de la variable de sesin Name, y establecer la propiedad Text del cuadro de texto txtBirth con el contenido de la variable de sesin Birth. 4. El cdigo debera ser similar al siguiente: Visual Basic .NET
If Not (Page.IsPostBack) Then Dim strName As String = CStr(Session("Name")) Dim strBirth As String = CStr(Session("Birth")) txtName.Text = strName txtBirth.Text = strBirth End If if (!Page.IsPostBack) { string strName = (string)Session["Name"]; string strBirth = (string)Session["Birth"]; txtName.Text = strName; txtBirth.Text = strBirth; }

Visual C#

5. En la instruccin Get de la propiedad pblica strName, agregar una lnea de cdigo precediendo a la instruccin Return que establezca la variable de sesin Name con el texto del cuadro de texto txtName. La instruccin Get debera ser similar a la siguiente: Visual Basic .NET
Get Session("Name") = txtName.Text Return txtName.Text End Get get { Session["Name"] = txtName.Text; return txtName.Text; }

Visual C#

6. En la instruccin Get de la propiedad pblica dtDate, agregar una lnea de cdigo precediendo a la instruccin Return que establezca la variable de sesin Birth con el texto del cuadro de texto txtBirth. La instruccin Get debera ser similar a la siguiente: Visual Basic .NET
Get Session("Birth") = txtBirth.Text Return CDate(txtBirth.Text) End Get get { Session["Birth"] = txtBirth.Text; return Convert.ToDateTime(txtBirth.Text); }

Visual C#

Evaluar el cdigo
1. Generar y examinar life.aspx. 2. En el navegador, escribir nuestro nombre en el cuadro de texto Name, escribir nuestra fecha de nacimiento en el cuadro de texto Birthdate, y escribir 400 en el cuadro de texto Coverage. 3. Hacer clic en Save. 4. En la parte superior del formulario Web Form life.aspx, hacer clic en el enlace a Medical. En el formulario Web Form medical.aspx, aparecen nuestro nombre y fecha de nacimiento. Estos valores se han obtenido de las variables de sesin. 5. Cambiar nuestro nombre en el cuadro de texto, y hacer clic en Save. 6. Hacer clic en el enlace a Life Insurance y comprobar que nuestro nombre ha cambiado en el formulario Web Form life.aspx.

10

Ejercicio 2 Utilizar cookies


En este ejercicio, utilizaremos cookies para almacenar todas las selecciones de beneficios que haga el usuario. Cuando el usuario regrese a la pgina default.aspx, sus selecciones aparecern en la pgina. Escenario Antes de que el usuario finalice el proceso de seleccin de beneficios, debera poder ver estas selecciones en una sola pgina. Hemos escogido ver una lista de los beneficios seleccionados en la pgina default.aspx. Mostraremos todos los beneficios seleccionados en la pgina default.aspx utilizando una cookie persistente. Para ambas pginas, medical.aspx y life.aspx, agregaremos cdigo que lea los valores existentes de la cookie, los actualice y rescriba la cookie.

Configurar la pgina de inicio


1. Abrir la pgina default.aspx. 2. Agregar dos etiquetas y dos controles de cuadro de texto en la parte inferior del formulario Web Form, de forma que ste tenga un aspecto similar al de la siguiente ilustracin.

11

3. Poner el nombre txtDoctor al primer cuadro de texto y txtLife al segundo. 4. Abrir default.aspx.vb o default.aspx.cs. 5. En el procedimiento de evento Page_Load, agregar cdigo para leer de una cookie denominada Benefits. Este cdigo debera aadirse tras la condicin Page.IsPostBack existente. 6. Declarar dos variables, strDoc y strLife, que almacenarn los valores doctors y life de la cookie Benefits. 7. Si la cookie existe y no est vaca, establecer la propiedad Text del cuadro de texto txtDoctors en strDoc, y establecer la propiedad de texto de txtLife en strLife. El cdigo debera ser similar al siguiente: Visual Basic .NET
Dim objGetCookie As HttpCookie = _ Request.Cookies("Benefits") Dim strDoc As String Dim strLife As String If Not objGetCookie Is Nothing Then strDoc = objGetCookie.Values("doctor") strLife = objGetCookie.Values("life") txtDoctor.Text = strDoc txtLife.Text = strLife End If

Visual C#

HttpCookie objGetCookie = Request.Cookies["Benefits"]; string strDoc; string strLife; if (objGetCookie != null) { strDoc = objGetCookie.Values["doctor"]; strLife = objGetCookie.Values["life"]; txtDoctor.Text = strDoc; txtLife.Text = strLife; }

8. Guardar default.aspx.

12

Almacenar la seleccin de doctores


1. Abrir medical.aspx.vb o medical.aspx.cs. 2. En el procedimiento de evento cmdSave_Click, agregar cdigo que recupere toda la informacin de la cookie Benefits, pero slo si la cookie existe y contiene informacin. Este cdigo aadido debera incluir dos variables de tipo cadena que almacenarn los valores de los doctores y del seguro de vida de la cookie. El cdigo debera ser similar al siguiente: Visual Basic .NET
Dim objCookie As HttpCookie = Request.Cookies("Benefits") Dim strDoc As String Dim strLife As String If Not objCookie Is Nothing Then strDoc = objCookie.Values("doctor") strLife = objCookie.Values("life") End If

Visual C#

HttpCookie objGetCookie = Request.Cookies["Benefits"]; string strDoc =""; string strLife =""; if (objGetCookie != null) { strDoc = objGetCookie.Values["doctor"]; strLife = objGetCookie.Values["life"]; }

3. Agregar cdigo para realizar las siguientes tareas: a. Actualizar el valor de la variable strDoc con el texto que contiene el cuadro de texto txtDoctor. b. Crear un nuevo objeto cookie, objNewCookie, con el nombre de cookie Benefits. Sustituiremos la cookie Benefits existente con una nueva cookie que contiene la informacin actualizada. c. Establecer la fecha de expiracin de la cookie Benefits a 30 das a partir de la fecha actual. d. Agregar a la cookie dos valores, denominados doctor y life. Estos valores contendrn strDoc y strLife, respectivamente. e. Escribir la cookie objNewCookie.

13

El cdigo debera ser similar al siguiente: Visual Basic .NET


strDoc = txtDoctor.Text Dim objNewCookie As New HttpCookie("Benefits") objNewCookie.Expires = DateTime.Now.AddDays(30) objNewCookie.Values.Add("doctor", strDoc) objNewCookie.Values.Add("life", strLife) Response.Cookies.Add(objNewCookie) strDoc = txtDoctor.Text; HttpCookie objNewCookie = new HttpCookie("Benefits"); objNewCookie.Expires = DateTime.Now.AddDays(30); objNewCookie.Values.Add("doctor", strDoc); objNewCookie.Values.Add("life", strLife); Response.Cookies.Add(objNewCookie);

Visual C#

4. Finalmente, debemos agregar cdigo al procedimiento de evento cmdSave_Click que redirecciona al usuario de regreso a la pgina default.aspx. El cdigo agregado debera ser similar al siguiente: Visual Basic .NET Visual C#
Response.Redirect("default.aspx") Response.Redirect("default.aspx");

5. Guardar el archivo medical.aspx.vb o medical.aspx.cs.

Almacenar las selecciones de seguro de vida (life insurance)


1. Abrir life.aspx.vb o life.aspx.cs. 2. En el procedimiento de evento cmdSave_Click, agregar cdigo que recupere toda la informacin de la cookie Benefits, pero slo si la cookie existe y contiene informacin. Este cdigo es idntico al cdigo agregado a medical.aspx. 3. Buscar la siguiente lnea de cdigo: Visual Basic .NET Visual C#
'TODO Lab 14: Build the string //TODO Lab 14: Build the string

Note Si esta seccin de cdigo no se encuentra en nuestro archivo life.aspx, podemos copiar el cdigo del archivo life.aspx file de la carpeta carpeta_instalacin\Labfiles\Lab14\VB\Starter\BenefitsVB o carpeta_instalacin\Labfiles\Lab14\CS\Starter\BenefitsCS.

14

4. Eliminar el comentario del cdigo bajo este comentario. Este cdigo genera una cadena que incluye las opciones seleccionadas de seguro de vida y el valor introducido para el importe de la cobertura (coverage). 5. Agregar cdigo para crear y escribir la cookie Benefits. Este cdigo es idntico al cdigo agregado a medical.aspx. 6. Agregar cdigo para redireccionar la pgina de regreso a la pgina default.aspx. 7. Una vez finalizado, todo el procedimiento de evento cmdSave_Click de life.aspx debera ser similar al siguiente: Visual Basic .NET
If Page.IsValid Then lblMessage.Text = "Valid!" 'TODO Lab 14: Set Session variables Session("Name") = txtName.Text Session("Birth") = txtBirth.Text Dim objCookie As HttpCookie = _ Request.Cookies("Benefits") Dim strDoc As String Dim strLife As String If Not objCookie Is Nothing Then strDoc = objCookie.Values("doctor") strLife = objCookie.Values("life") End If If (chkShortTerm.Checked) Then If (chkLongTerm.Checked) Then strLife = "Short Term and Long Term" Else strLife = "Short Term" End If ElseIf (chkLongTerm.Checked) Then strLife = "Long Term" End If strLife &= ": Coverage = $" & txtCoverage.Text Dim objNewCookie As New HttpCookie("Benefits") objNewCookie.Expires = DateTime.Now.AddDays(30) objNewCookie.Values.Add("doctor", strDoc) objNewCookie.Values.Add("life", strLife) Response.Cookies.Add(objNewCookie) Response.Redirect("default.aspx") End If

Nota Podemos copiar y pegar este cdigo desde el archivo VB\Starter\life.txt. Este archivo puede encontrarse dentro del fichero labs12.zip

15

Visual C#

if (Page.IsValid) { lblMessage.Text = "Valid!"; //TODO Lab 14: Set Session variables Session["Name"] = txtName.Text; Session["Birth"] = txtBirth.Text; HttpCookie objCookie = Request.Cookies["Benefits"]; string strDoc = ""; string strLife = ""; if (objCookie != null) { strDoc = objCookie.Values["doctor"]; strLife = objCookie.Values["life"]; } if (chkShortTerm.Checked) { if (chkLongTerm.Checked) { strLife = "Short Term and Long Term"; } else { strLife = "Short Term"; } } else if (chkLongTerm.Checked) { strLife = "Long Term"; } strLife += ": Coverage = $" + txtCoverage.Text; HttpCookie objNewCookie = new HttpCookie("Benefits"); objNewCookie.Expires = DateTime.Now.AddDays(30); objNewCookie.Values.Add("doctor", strDoc); objNewCookie.Values.Add("life", strLife); Response.Cookies.Add(objNewCookie); Response.Redirect("default.aspx"); }

Nota Podemos copiar y pegar este cdigo desde el archivo CS\Starter\life.txt. Este archivo puede encontrarse dentro del fichero labs12.zip 8. Guardar el archivo life.aspx.vb o life.aspx.cs.

16

Probar la cookie
1. Generar y examinar la pgina default.aspx. 2. Hacer clic en el enlace a Medical. 3. Rellenar la informacin requerida y hacer clic en Save. 4. Seremos retornados a default.aspx, y la informacin de doctores se ha cumplimentado. 5. Hacer clic en el enlace a Life Insurance. 6. Rellenar la informacin requerida, seleccionar una o ambas opciones de periodo de cobertura, y hacer clic en Save. 7. Seremos retornados a default.aspx y la informacin relativa al seguro de vida se ha cumplimentado.

17

Ejercicio 3 Utilizar variables de aplicacin


En este ejercicio, agregaremos un contador de pginas a la pgina retirement.aspx. Escenario Deseamos proporcionar una forma rpida y sencilla para que los directivos puedan ver cuntos empleados acceden al sitio Web Benefits. Para ello, hemos decidido implementar un contador de pginas en la pgina default.aspx utilizando una variable de aplicacin. Debemos asegurarnos de que el contador no se incrementa cuando tiene lugar el postback de una pgina, y que slo cuenta las visitas nicas a la pgina.

Agregar componentes de la interfaz de usuario (IU)


1. Abrir la pgina retirement.aspx. 2. Agregar dos etiquetas y un cuadro de texto en la parte inferior del formulario, para que ste tenga un aspecto similar al siguiente.

3. Ponerle el nombre txtVisits al nuevo cuadro de texto.

18

Agregar el cdigo
1. En el procedimiento de evento Page_Load, agregar cdigo que incremente el valor de la variable de aplicacin Visits en una unidad. 2. El cdigo debera bloquear la variable de aplicacin antes de incrementarla, y debera desbloquearla despus de incrementarla. Insertar el cdigo de modo que se ejecute nicamente cuando la pgina no enve informacin de retorno en el postback. 3. Agregar cdigo para establecer la propiedad Text de txtVisits al valor almacenado en la variable de aplicacin Visits. Este cdigo debera ejecutarse cada vez que se cargue la pgina. 4. Una vez finalizado, el procedimiento de evento Page_Load debera ser similar al siguiente: Visual Basic .NET
If Not Page.IsPostBack Then Dim dsRetirement As New DataSet() dsRetirement.ReadXml( _ Server.MapPath("mutual_funds.xml")) dgRetirement.DataSource = dsRetirement dgRetirement.DataBind() Application.Lock() Application("Visits") = CInt(Application("Visits")) + 1 Application.UnLock() End If txtVisits.Text = CStr(Application("Visits"))

Visual C#

if (!Page.IsPostBack) { DataSet dsRetirement = new DataSet(); dsRetirement.ReadXml( Server.MapPath["mutual_funds.xml"]); dgRetirement.DataSource = dsRetirement; dgRetirement.DataBind(); Application.Lock(); Application["Visits"] =Convert.ToInt16(Application["Visits"]) + 1; Application.UnLock(); } txtVisits.Text = Application["Visits"].ToString();

Probar la variable de aplicacin


1. Generar y examinar la pgina retirement.aspx. 2. Actualizar el navegador. 3. El contador de pginas se incrementa cada vez que actualizamos la pgina.

19

Ejercicio 4 Almacenar variables de sesin en una base de datos


En este ejercicio, almacenaremos las variables de sesin de nombre de usuario y fecha de nacimiento en una base de datos SQL Server. Escenario Para preparar nuestro sitio Web a una implantacin en una granja Web, las variables de sesin se almacenarn en una ubicacin centralizada. Hemos decidido utilizar una base de datos SQL Server como solucin de almacenamiento a corto plazo.

Configurar Web.config
1. Abrir el archivo Web.config de la aplicacin Web Benefits. 2. Buscar el elemento sessionState. 3. Cambiar el modo de sessionState por SQLServer, y establecer la cadena de conexin para utilizar la seguridad integrada para conectarse a localhost. Una vez finalizado, el elemento sessionState debera ser similar al siguiente:
<sessionState mode="SQLServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1; Integrated Security=SSPI" cookieless="false" timeout="20" />

Importante Debido a que el archivo Web.config es un archivo Extensible Markup Language (XML), es importante el uso correcto de maysculas de los nombres de los elementos y los atributos. 4. Guardar el archivo Web.config.

Instalar y configurar las bases de datos


Las variables de sesin estn almacenadas en dos bases de datos preconfiguradas, denominadas ASPState y tempdb. Para instalar y configurar las bases de datos, seguir estos pasos: 1. En el men Inicio, seleccionar Todos los programas, seleccionar Accesorios y hacer clic en Lnea de comandos. Se abrir una ventana de comandos. 2. En la lnea de comandos, escribir el siguiente comando, siendo version la ltima versin del .NET Framework instalada en nuestro equipo, y pulsar ENTER:
cd \WINDOWS\Microsoft.NET\Framework\version\

La lnea de comandos cambia al nuevo directorio.

20

3. En la lnea de comandos, escribir el siguiente comando y pulsar ENTER:


OSQL S localhost E <InstallSqlState.sql

La ventana de comandos muestra una serie de nmeros y mensajes, y regresa a la lnea de comandos. Las bases de datos ASPState y tempdb se han restablecido. 4. Cerrar la lnea de comandos, y abrir Windows Explorer. 5. Ir al siguiente directorio: Visual Basic .NET Visual C# VB\Starter CS\Starter Estas carpetas pueden encontrarse dentro del fichero labs12.zip 6. Hacer doble clic en Lab12.bat. Este archivo por lotes ejecuta una consulta SQL que configura la seguridad de las bases de datos ASPState y tempdb. 7. Cerrar Windows Explorer.

Probar la aplicacin Web


1. Generar y examinar la pgina default.aspx para probar la aplicacin Web Benefits. 2. Hacer clic en el enlace a Medical, introducir la informacin necesaria, y hacer clic en Save. 3. Hacer clic en el enlace a Life Insurance. Comprobar que las variables de sesin que contienen nuestro nombre y fecha de nacimiento funcionan correctamente.