Académique Documents
Professionnel Documents
Culture Documents
Registration Registration
Register.aspx Register.aspx
ASPState
Web. config
tempdb
Retirement Retirement
Retirement.aspx Retirement.aspx
Medical Medical
Medical.aspx Medical.aspx
Dental Dental
Dental.aspx Dental.aspx
Prospectus Prospectus
Prospectus.aspx Prospectus.aspx
Doctors Doctors
Doctors.aspx Doctors.aspx
dentalService1.asmx dentalService1.asmx
XML Files
*****************************
Doctors
Dentists
Objetivos
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.
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.
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;
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
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
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
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");
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
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();
19
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.
20
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.