Practica de ASP.net

download Practica de ASP.net

of 49

Transcript of Practica de ASP.net

  • 1ASP.NET

    Integracin de SistemasDiseo e implementacin con .NET

    ndice de Contenidos Introduccin Formularios Web

    Server Controls HTML WebControls

    Intrnsecos Validacin RichControls

    Eventos Ciclo de Vida

    PostBack Configuracin

    Web.config Global.asax

    Gestin de Estado Cookies Session Transferencia entre pginas

    Seguridad Autenticacin Autorizacin

    Gestin Errores Nivel Pgina Nivel Aplicacin

    Master Pages Traceado de aplicaciones

    Nivel Pgina Nivel Aplicacin

    Internacionalizacin Patrones Especficos

    MVC Page Controler Front Controller Intercepting Filter

    Caso Prctico MiniPortal

  • 2HTML Forms Un HTML Form es la porcin de un documento HTML que aparece entre las

    etiquetas

    Un botn submit () juega un rol especial Cuando es pulsado, el navegador enva el HTML Form junto con cualquier

    entrada de datos del usuario al servidor Web

    La forma en la que se enva el HTML Form, depender del atributo Method: Si el atributo Method del form no est presente o tiene el valor GET, el

    navegador enviar al servidor un comando HTTP GET

    Si el atributo Method del form tiene el valor POST, el navegador enviar al servidor un comando HTTP POST

    HTML FormsMethod = GET

    . . .

    GET /suma.html?op1=2&op2=2 HTTP/1.1...

    Connection: Keep-Alive[blank line]

    El navegador enva los datos introducidos como una cadena de consulta

    Method = POST

    . . .

    POST /suma.html HTTP/1.1..

    Content-Type: ...Content-Length: 11[blank line]op1=2&op2=2

    El navegador enva los datos introducidos en el cuerpode la solicitud HTTP

  • 3Procesamiento en el Servidor

    Existen varias tecnologas de procesamiento CGI (Common Gateway Interface)

    Define una API de bajo nivel Popular en entornos UNIX, no tanto en Windows

    ISAPI (Internet Server Application Programming Interface) Son DLL Windows que corren bajo Internet Information Server (IIS)

    Escritas en C++ Mejor rendimiento que CGI

    ASP (Active Server Pages) Simple solucin: HTML + Script del lado del servidor Programadas en JScript o VBScript Objetos intrnsecos que abstraen detalles de bajo nivel de HTTP.

    Objetos Request y Response Permite usar ADO (ActiveX Data Objects) para acceso a datos

    Qu es ASP.NET?

    ASP.NET es el framework de programacin Web dentro de .NET

    Permite desarrollar aplicaciones Web con un modelo similar al utilizado para aplicaciones Windows

    El componente fundamental de ASP.NET es el WebForm Una aplicacin Web ASP.NET consta de uno o ms WebForms

    Independencia del cliente (navegador, S.O., dispositivo fsico, etc.)

    Permite utilizar cualquier lenguaje .NET

  • 4Componentes de una aplicacin Web ASP.NET

    WebForms (Formularios Web) Uno o ms archivos con extensin .aspx

    Archivos Code-Behind Archivos asociados a WebForms que contienen

    cdigo que se ejecutar en el lado del servidor (e.g. VB.NET, C#, etc.)

    Archivos de configuracin con formato XML Un nico archivo Machine.config por servidor Un archivo Web.config por cada aplicacin

    Componentes de una aplicacin Web ASP.NET

    Global.asax Cdigo necesario para responder a eventos a nivel

    de aplicacin Directorio BIN Contiene el assembly de la aplicacin (e.g. MyWebApp.dll)

    Cero o ms assemblies (Componentes externos)

    Enlaces a Servicios Web XML Permiten a la aplicacin ASP.NET enviar y recibir

    datos desde Servicios Web

  • 5Modelo de ejecucin de ASP.NET

    Navegador Web

    Compilador

    Parser

    hello.aspx

    Assembly IL

    AssemblyCacheAssembly IL

    HTTP Runtime

    Execute

    Memoria

    CLIENTE SERVIDOR

    1. El navegador cliente enva una peticin GET HTTP al servidor

    2. El parser de ASP.NETinterpreta el cdigo fuente

    3. ASP.NET invoca al compilador

    4. El Runtime carga y ejecuta el cdigo intermedio (IL)

    http://.../hello.aspx

    Primera peticin

    Modelo de ejecucin de ASP.NET

    Navegador Web

    Compilador

    Parser

    hello.aspx

    Assembly IL

    AssemblyCache

    Assembly IL

    HTTP Runtime

    Execute

    Memoria

    CLIENTE SERVIDOR

    1. El navegador cliente enva una peticin GET HTTP al servidor

    2. El Runtime carga y ejecuta inmediatamente el cdigo intermedio ya compilado durante el primer acceso

    http://.../hello.aspx

    Segunda peticin

  • 6Diferentes tipos de proyectos ASP.NET Web Site

    File New WebSite No tiene estructura de proyecto

    Pertenencia de un fichero al proyecto basada en su ubicacin en la carpeta del Web Site

    ASP.NET Web Application File New New Project Asp.NET Web Application Proyecto para la realizacin de aplicaciones Web (es el que

    usaremos)

    ASP.NET Web Service Application File New New Project Asp.NET Service Application Proyecto para la realizacin de servicios web

    Arquitectura ASP.NET

    Cliente Web

    IISAspnet_isapi.dll

    HttpApplication

    HttpModule

    HttpHandler

    ASPNETWP

    HTTP

    HttpRuntime

    HttpApplication

    Module

    Handler Factory

    Handler

  • 7Formularios Web (Web Forms)

    Qu es un Formulario Web? Componentes de un Web Form

    Controles de servidor HTMLWebControls

    Eventos en un Web Form

    Ciclo de vida de un Web Form

    Formularios Web (Web Forms)

    Web Form Es una pgina expresada en lenguaje de marcas que es

    compilada y ejecutada dinmicamente en el servidor para generar la salida solicitada por el cliente (explorador dispositivo)

    Se compone de: Parte vista: Contiene cdigo HTML y declaraciones de controles del

    lado del servidor Tiene extensin .aspx

    Cdigo asociado, denominado CodeBehind

    Separacin del aspecto visual (vista) del cdigo (controlador) Permite trabajo independiente de diseadores grficos y

    programadores

  • 8Formularios Web (Web Forms)Componentes de un Web Form

    La parte vista de un Web Form (e.g. PageName.aspx) puede incluir: Directivas de pgina

    Se indican dentro de Permiten especificar atributos especficos de una pgina .aspx

    CodeBehind: fichero de cdigo asociado ContentType: tipo MIME de la response ErrorPage: URL ante aparicin de errores Inherits: clase base del objeto Page Language: lenguaje de programacin empleado Trace: habilitacin de la traza para la pgina actual EnableViewState: habilitacin de la propiedad VIEWSTATE etc.

    e.g.

    Formularios Web (Web Forms)Componentes de un Web Form

    La parte vista de un Web Form puede incluir (cont.): Controles:

    Comentarios

    Data bind expressions

    Bloques de cdigo ...

    Render code o No recomendado; preferible etiquetas

    asociadas a los eventos de los controles

  • 9Formularios Web (Web Forms)Componentes de un Web Form. Ejemplo Default.aspx

    ASP.NET Tutorial

    Formularios Web (Web Forms)Componentes de un Web Form. Ejemplo Default.aspx.csnamespace ASPDotNetTutorial {

    public partial class _Default : System.Web.UI.Page {protected void Page_Load(object sender, EventArgs e) {

    }}

    }

  • 10

    Formularios Web (Web Forms)Componentes de un Web Form. Ejemplo Default.aspx.designer.cs//------------------------------------------------------------------------------// // This code was generated by a tool.// Runtime Version:2.0.50727.42//// Changes to this file may cause incorrect behavior and will be lost if// the code is regenerated.// //------------------------------------------------------------------------------

    namespace ASPDotNetTutorialMasterPages {

    public partial class Default {

    protected global::System.Web.UI.HtmlControls.HtmlForm form1;}

    }

    Formularios Web (Web Forms)Componentes de un Web Form

    El cdigo asociado a un Web Form se conoce como CodeBehind Implementa el patrn Page Controller (lo veremos ms

    adelante)

    Es una partial class (una sola clase, implementada en dos archivos) que contiene el cdigo asociado a la pgina (controlador) e.g. PageName.aspx.cs

    public partial class PageName : System.Web.UI.Page Incluye cdigo generado por el programador

    e.g. PageName.aspx.designer.cs public partial class PageName Incluye cdigo autogenerado por el IDE

  • 11

    Formularios Web (Web Forms)Controles de Servidor

    Componentes que se ejecutan en el lado del servidor

    Encapsulan partes de la interfaz de usuario

    Poseen el atributo runat="server" Pueden mantener su estado entre PostBacks al

    servidor Para esto hacen uso del atributo ViewState

    Poseen un modelo de objetos comn Ej.: todos tienen las propiedades ID y Text

    Generan HTML especfico segn navegador del cliente

    Formularios Web (Web Forms)Tipos de Controles de Servidor

    HTML Por defecto, los elementos HTML no son accesibles desde

    cdigo del lado del servidor

    Agregando runat="server" y el atributo id, se convierten en Controles de Servidor HTML

    Se encuentran definidos como objetos dentro del Namespace System.Web.UI.HtmlControls

    Ejemplo:

    Start

  • 12

    Formularios Web (Web Forms)Tipos de Controles de Servidor

    WebControls Slo accesibles del lado del servidor

    Poseen mayor funcionalidad, y pueden contener otros objetos Dependen del Namespace

    System.Web.UI.WebControls Ejemplo

    Tipos de WebControls Intrnsecos, de Validacin, Ricos, listas vinculables datos

    No tienen una relacin 1:1 con los elementos HTML

    Formularios Web (Web Forms)Equivalencias de Controles

    Botn HTML

    Controles de Servidor HTML

    Controles de Servidor Web (WebControls)

  • 13

    Formularios Web (Web Forms)Equivalencias de Controles

    HTML equivalenteWebControl

    Formularios Web (Web Forms)Cmo trabajan los Controles del Servidor?

    Al procesarse la pgina, y encontrar un atributo runat="server" Se genera el cdigo HTML representativo del control,

    con sus propiedades Asignndole a cada uno, un id nico Se aade al formulario un cuadro de texto oculto,

    para almacenar el estado de la pgina ("__VIEWSTATE")

  • 14

    Proveen nombres estndar, con propiedades comunes a los controles

    Incluyen propiedades especficas

    Generan HTML acorde al navegador que llama a la pgina

    Formularios Web (Web Forms)WebControls Intrnsecos

    Son elementos ocultos que validan las entradas de datos contra algn patrn

    El proceso de validacin puede ser llevado a cabo en: Cliente

    EnableClientScript="True" (opcin por defecto) El navegador del cliente debe soportar lenguaje script Le da al usuario una respuesta inmediata Reduce el nmero de "PostBacks"

    Servidor Repite la validacin (siempre) Permite validaciones ms complejas (e.g. contra datos

    almacenados en base de datos)

    Formularios Web (Web Forms)WebControls Validacin

  • 15

    Formularios Web (Web Forms)WebControls Validacin

    ASP.NET proporciona 6 controles RequiredFieldValidator. Campo obligatorio

    CompareValidator. Valida contra un valor constante o contra otro control

    RangeValidator. Valor dentro de un rango de tipos

    RegularExpressionValidator. Valida contra un patrn o expresin regular

    CustomValidator. Se dispara un evento (Cliente o Servidor) donde se controla la validacin

    ValidationSummary. No es un validador en s mismo. Muestra los mensajes de error generados por otros controles de forma agrupada

    Formularios Web (Web Forms)WebControls Validacin

    Propiedades importantes ControlToValidate Text ErrorMessage Display

    En el lado del servidor se puede determinar si todas las validaciones fueron exitosas mediante la Page.IsValid

    Muy importante! La propiedad IsValid no est disponible en los eventos Init

    ni Load del WebForm

  • 16

    Formularios Web (Web Forms)WebControls Controles "Ricos"

    Controles con lgica de IU compleja encapsulados de forma sencilla

    Ejemplos: . Permite mostrar banners de una

    secuencia predeterminada o aleatoria . Permite disponer de un

    calendario altamente personalizable . Permite formatear y mostrar el

    contenido de un fichero XML de acuerdo a un conjunto de estilos definidos en un fichero XSL.

    CLIENTE WEB SERVIDOR

    Formularios Web (Web Forms)Eventos en un WebForm Modelo de Eventos

    EventoMensaje

    1. Analizar mensaje2. Llamar al manejador

    apropiado

    ManejadorRespuesta

    ejemplo.aspx

  • 17

    Formularios Web (Web Forms)Eventos en un WebForm

    PostBack A instancias de un formulario Web mostrado en el cliente cada

    evento sucedido en l genera un POST hacia el servidor y una respuesta (BACK). Este ida y vuelta dentro de un mismo formulario Web se llama PostBack

    ViewState Es un mecanismo que permite (de forma automtica) mantener

    el estado de los controles del formulario Web entre PostBacks

    El estado de los controles viaja en un campo oculto, denominado ViewState, por cada PostBack

    Formularios Web (Web Forms)Eventos en un WebForm

    Declaracin de eventos en un control del lado del cliente e.g. Default.aspx

    Atencin del evento en el servidor (Code Behind) e.g. Default.aspx.cs

    protected void btnExampleClick(object sender,EventArgs e) {

    this.btnExample.Text = "Pulsado";}

  • 18

    Formularios Web (Web Forms)Ciclo de vida de un WebForm

    Sucesos ms importantes del ciclo de vida de una pgina: Inicializacin de objetos (Page_Init) Cargar View State Procesar datos del Post Carga de la pgina (Page_Load) Eventos Grabar View State Render Page_Unload

    PostBack Ocurre cuando una pgina genera un formulario HTML

    cuyos valores son reenviados a la misma pgina Ejemplo: validacin de controles

    ASP y otras tecnologas servidor pierden estado de la pgina entre llamadas a no ser que a nivel de cdigo el estado se mantenga

    explcitamente

    ASP.NET mantiene el estado de los controles de servidor entre PostBack's Vlido para llamadas por GET y POST Controles de servidor se rellenan automticamente tras el

    PostBack No se almacena estado en el servidor

  • 19

    PostBack

    El evento Page_Load se lanza en cada peticin a un Web Form Comportamiento diferente dependiendo de si es o no

    la primera vez que se muestra la pgina Si un control tiene habilitado el VIEWSTATE , slo necesita

    inicializarse en la primera llamada (Page.IsPostBack==false)

    private void Page_Load(object server, EventArgs e) {if (Page.IsPostBack==false) {

    // Initialization code} else {

    // Request is a postback}

    }

    PostBack

    Existe la posibilidad de que el PostBack no devuelva control a la pgina que origin la llamada, sino que lo haga a una pgina diferente

    Propiedades relacionadas: control.PostBackUrl

    Direccin de la pgina empleada como PostBack

    Page.PreviousPage Direccin de la pgina que origin el PostBack

    PreviousPage.IsCrossPagePostBack Equivalente a IsPostBack Indica si la pgina actual se abri como consecuencia de un

    PostBack originado en una pgina diferente a la actual

  • 20

    PostBack

    Configuracin

    Niveles configurables servidor, root, subdirectorios web

    FicherosMachine.configWeb.config

    RootDir

    RootDir

    SubDir1SubDir1

    SubDir2SubDir2

    Machine.config

    Web.config

  • 21

    ConfiguracinMachine.config

    Configuracin del servidor Conjunto por defecto de secciones de configuracin Heredado por todas las aplicaciones Web

    Ubicacin C:\WINDOWS\Microsoft.NET\Framework\vn.n.nnnnn\CONFIG\machine.config

    ConfiguracinWeb.config Equivalente Web al fichero App.config

    Opciones de usuario en la seccin Conjunto pares (clave/valor) Accesibles mediante ConfigurationSettings.AppSettings[key]

    Opciones aplicacin Web en la seccin

  • 22

    ConfiguracinWeb.config

    Existe la posibilidad de definir secciones personalizadas ConfigurationSettins.GetSection(SECTION_NAME)

    Puede haber mltiples Web.config por aplicacin Web, pero slo uno por directorio Configuracin se aplica al propio directorio y a sus subdirectorios

    Configuracin subdirectorios sobrescribe configuracin heredada

    IIS gestiona Web.config Restringe acceso: clientes no pueden acceder a su contenido

    Monitorizacin Cach, por motivos de eficiencia Actualizacin peridica

    Cambios aplicados en cuanto se detectan, sin reiniciar IIS

    ConfiguracinWeb.config

  • 23

    ConfiguracinWeb Site Administration Tool

    Herramienta grfica para la gestin de la configuracin de la aplicacin Web Acceso grfico a Web.config

    Integrada en Visual StudioMenu > Project > ASP.NET Configuration Permite configurar aspectos relativos a:

    Seguridad Configuracin de la aplicacin Configuracin de acceso a datos

    ConfiguracinWeb Site Administration Tool

  • 24

    ConfiguracinGlobal.asax

    Situado en la carpeta raz de la aplicacin Web No accesible a travs del Servidor Web

    Declaraciones de eventos y objetos a nivel de aplicacin

    Eventos originados a nivel de... Aplicacin Sesin Peticin

    A diferencia de Machine.config y Web.config, Global.asax no es XML, sino cdigo fuente Compilado antes de la primera peticin Cambios detectados sin reiniciar servidor Web

    ConfiguracinGlobal.asax: orden eventos Primera Peticin

    Application_Start

    Primera peticin por cada usuario Session_Start

    Cada Peticin Application_BeginRequest

    Application_Authenticate

    Application_EndRequest

    Error en tiempo de ejecucin Application_Error

    Logout de usuario / Timeout de sesin Session_End

    Parada o Reinicio del Servidor Web Application_End

  • 25

    ConfiguracinGlobal.asax: uso tpico de eventos

    Application_Start til para cargar la informacin de configuracin especfica de un sitio Web

    Session_Start Inicializacin variables de sesin

    Application_BeginRequest Acciones de personalizacin

    Texto para ser incluido al principio de cada pgina

    Applicattion_Authenticate Cdigo adicional a la autenticacin: log, comprobacin de roles, etc.

    Application_EndRequest Texto para ser aadido al final de cada pgina

    ConfiguracinGlobal.asax: uso tpico de eventos

    Application_Error til para enviar e-mail o escribir al event log cuando un ocurra un error que no

    pueda ser gestionado

    Session_End Escribir a un log o base de datos los logout de cada usuario

    Application_End til para escribir a un log cuando se ha parado una aplicacin Web

    Parmetros comunes Object sender EventArgs e

  • 26

    ConfiguracinGlobal.asax: ejemplopublic class Global : System.Web.HttpApplication {

    protected void Application_Start(object sender, EventArgs e) {

    Application.Lock();>Application.UnLock();

    }

    protected void Application_End(object sender, EventArgs e) {

    }

    protected void Session_Start(object sender, EventArgs e) {

    }

    >

    }

    Gestin del Estado

    Protocolo HTML es stateless

    Entonces Cmo se almacenan datos entre peticiones? Cmo se envan datos de una pgina a otra?

  • 27

    Gestin del EstadoLado Cliente

    Cliente solicita (request) una pgina inicial

    Servidor genera respuesta HTTP (response) que se enva al cliente Respuesta incluye datos (estado)

    Usuario consulta la respuesta y realiza nueva peticin Esta segunda peticin debe incluir los datos recibidos en la

    respuesta previamente recibida

    Servidor recibe y procesa datos Servidor puede ser el mismo o diferente en ambas peticiones

    Gestin del EstadoLado Cliente

    Parmetros incluidos en la URL (tag ) Query string Visibilidad elevada

    Puede no ser conveniente

    Elementos de formularios ocultos (

  • 28

    Gestin del EstadoLado Cliente - ViewState

    ViewState puede utilizarse como mecanismo genrico de estado Almacena estado de los controles entre una peticin y la

    siguiente

    Caractersticas Puede deshabilitarse a nivel de control o a nivel de pgina

    (habilitado por defecto) EnableViewState="false"

    Pueden aadirse datos serializables ViewState["variableName"] = variableValue;

    Problema: Uso de ancho de banda

    Gestin del EstadoLado Cliente - Cookies

    Almacenan datos en el navegador del cliente

    Creacin

    HttpCookie cookie = new HttpCookie("loginName", UserProfile.LoginName);

    cookie.Expires = DateTime.Now.AddDays(30);Response.Cookies.Add(cookie);

    Lectura

    HttpCookie cookie = Request.Cookies["loginName"];

    Borrado

    HttpCookie cookie = Request.Cookies["loginName"];cookie.Expires = DateTime.Now.AddDays(-1);Response.Cookies.Add(cookie);

  • 29

    CookiesEjemplo

    Registro de la ltima visitaprotected void Page_Load(object sender, EventArgs e) {

    String lastVisit;

    if (Request.Cookies["lastVisit"] == null)lblWelcome.Text = "Welcome. This is your first visit today";

    else {lastVisit = Request.Cookies["lastVisit"];lblWelcome.Text = "Your last visit was on " + lastVisit + ".";

    }

    DateTime time = DateTime.Now;

    Response.Cookies["lastVisit"] = time.ToString();Response.Cookies["lastVisit"].Expires = time.AddDays(1);

    }

    Gestin del EstadoLado Cliente - Cookies

    Propiedades Domain

    Servidor del que se descarg la cookie

    Expires Fecha (objeto DateTime) en la que el navegador borrar la cookie

    Name Nombre de la cookie

    Path Prefijo URL de la cookie

    Value Contenido de la cookie

  • 30

    Gestin del EstadoLado Servidor

    Variables de Aplicacin Compartidas entre todas las sesiones

    Variables de Sesin Accesibles slo al propietario de la sesin

    Requieren envo de SessionID

    Almacenamiento persistente ASP.NET State Service

    Base de Datos

    Gestin del EstadoVariables de Aplicacin

    Estado aplicacin se almacena en una instancia de la clase HttpApplicationState

    Accesible a travs de la propiedad Page.Application Coleccin pares (clave, valor) Ejemplo acceso: Application["Languages"];

    Modificacin en entornos concurrentes Application.Lock antes de actualizar Application.Unlock despus de actualizar

    Inicializacin a travs del fichero Global.asax

  • 31

    Gestin del EstadoVariables de Sesin

    Qu es una sesin? Contexto en el que un usuario se comunica con un servidor a travs de

    mltiples peticiones HTTP

    Problemas HTTP es no orientado a estado (stateless) HTTP es no orientado a sesiones (sessionless)

    Concepto de sesin manejado a nivel de programacin

    Estado aplicacin se almacena en una instancia de la clase HttpSessionState Accesible a travs de la propiedad Page.Session

    Coleccin pares (clave, valor) Ejemplo acceso: Session["loginName"];

    Gestin del EstadoVariables de Sesin Conceptos involucrados con el manejo de la sesin

    Session identifier: cadena ascii de 120 bits Session events: Session_OnStart, Session_OnEnd Session variables: almacenamiento datos entre peticiones

    Por defecto, se almacena en una cookie generada automticamente ASP.NET_SessionID

    Opcionalmente puede gestionarse a travs de la propia URL No requiere cambios en el cdigo aplicacin.

    Links relativos siguen funcionando () Redirecciones mediante HttpResponse.ApplyAppPathModifier

    Ejemplo: http://server/site/(uqwfp455t2qav155)/default.aspx Web.Config:

  • 32

    Gestin del EstadoVariables de Sesin

    El estado de la sesin puede almacenarse: In-process: en el proceso de ASP.NET Out-of-process:

    en un servidor de estado ASP.NET en una base de datos SQL Server

    In-process: ptimo

    Out-of-process: fiabilidad y escalabilidad Sobrevive a cadas proceso ASP.NET Estado compartido entre mquinas de una granja Web.config:

    Gestin del EstadoVariables de Sesin

    Propiedades objeto Session Count

    Nmero de pares (clave, valor) almacenados

    Keys Conjunto de las claves almacenadas en la sesin

    IsNewSession Indica si la sesin se ha creado durante la carga de la pgina actual

    SessionID Identificador de sesin

    Timeout Mximo nmero de minutos durante los que la sesin puede

    permanecer inactiva antes de ser eliminada Tiempo por defecto: 20 minutos

  • 33

    Gestin del EstadoTransferencia de Control entre Pginas

    Hipervnculo

    Postback

    Response.Redirect Origina redireccin HTTP Indica al navegador una nueva direccin de destino

    Server.Transfer Similar a una redireccin, pero internamente en el servidor

    Server.Execute Ejecuta una pgina y devuelve el control a la pgina origen Ambas pginas deben pertenecer al mismo servidor

    Gestin del EstadoTransferencia de Control entre Pginas

    Response.Redirect

    Indica al servidor Web que cambie a otra pgina Response.Redirect("/MainPage.aspx");

    Direccin destino puede ser externa Response.Redirect("http://www.google.com/");

    Crea una nueva request

  • 34

    Gestin del EstadoTransferencia de Control entre Pginas

    Server.Transfer Redirecciona al usuario a una nueva pgina

    Server.Transfer("/MainPage.aspx");Mantiene recursos

    Request se mantiene nicamente se transfiere el control a una nueva pgina del

    servidor

    Direccin destino ha de ser interna al servidorMantiene la URL original en el navegador

    Gestin del EstadoTransferencia de Control entre Pginas

    Server.Execute Flujo de informacin

    Detiene la carga de la pgina original Inicia la carga de la pgina indicada como parmetro Contina la carga de la pgina original

    Propiedades Ambas pginas (original y la empleada como parmetro) han

    de ser internas al servidor Se mantiene estado de los objetos entre las pginas

  • 35

    Autenticacin

    Proceso mediante el que se validan las credenciales de usuario

    Objetivo: controlar acceso a recursos

    Niveles: IIS ASP.NET

    Configurable desde web.config

    AutenticacinAutenticacin Internet Information Server

    Configurar IIS en el modo de autenticacin elegido Annimo

    Bsica

    Digest

    Certificados Digitales

    Integrada

    Configurar ASP.NET mediante web.config

  • 36

    AutenticacinAutenticacin ASP.NET

    Modos de autenticacin None

    No se realiza autenticacin Acceso annimo permitido a toda la aplicacin Web

    Windows Delega autenticacin en IIS

    Forms Autenticacin basada en formularios

    Passport Autenticacin a travs del servicio Web MS Passport

    AutenticacinAutenticacin ASP.NET

    Basada en formularios web Pgina de autenticacin Cookie de autorizacin (authentication ticket)

    Configuracin Establecer autenticacin IIS como annimaWeb.config

  • 37

    AutenticacinAutenticacin ASP.NET

    IISIIS ASP.NETASP.NET

    No existe cookie

    Usuario

    Password

    SubmitSubmit

    Cookie

    Pgina protegida

    Existe cookie

    loginForm.aspx

    AutenticacinAutenticacin ASP.NET Validacin Usuario: personalizada o integrada en web.config

    Redireccin automtica FormsAuthentication.RedirectFromLoginPage(string userName, bool createPersistentCookie) Direccin destino una vez realizada la autenticacin

    Solicitud de pgina protegida : se redirecciona a esta pgina Solicitud de pgina de login : se redirecciona a defaultURL (configurado en Web.config)

    Redireccin personalizada Response.Redirect, Server.Transfer, Server.Execute FormsAuthentication.SetAuthCookie FormsAuthentication.GetAuthCookie

    Revocacin del authentication ticket FormsAuthentication.SignOut()

  • 38

    AutenticacinAutenticacin ASP.NET

    Qu ocurre si cliente deshabilita las cookies? URL rewriting: authentication ticket en la propia URL

    Ejemplo:

    Autorizacin Es posible controlar de forma declarativa a qu recursos

    del sitio Web tienen acceso los usuarios Se configura en el web.config e.g. slo se permite acceso al sitio Web a los usuarios

    autenticados

    Comodines * todos los usuarios ? Usuarios annimos

  • 39

    Autorizacin

    Es posible definir control de acceso para recursos especficos, mediante una seccin

    e.g. se concede permiso de acceso a la pgina Register.aspx a todos los usuarios

    Pginas de Error Ejecucin aplicacin web puede originar excepciones

    Controladas: IncorrectPasswordException, DuplicateInstanceException,... No Controladas

    Originadas por algn tipo de error interno Acceso a base de datos etc.

    Encapsuladas como excepciones InternalErrorException Errores HTML

    Pgina no encontrada Error Servidor Etc.

    Pgina de Error Pgina a la que se redirecciona la aplicacin en caso de ocurrir una excepcin no controlada

    Se pueden definir en dos niveles: A nivel de pgina: atributo PageError A nivel de aplicacin: seccin customErrors del Web.config

  • 40

    Pginas de ErroresNivel de Pgina

    Atributo PageError Especifica que pgina se muestra cuando la pgina actual

    origina una excepcin no capturada

    Ejemplo

    Pginas de ErroresNivel de Aplicacin

    Ejemplo web.config

    Opciones atributo mode On

    Habiltita los errores personalizados Si no se especifica el atributo defaultRedirect, los usuarios vern un error genrico.

    Off Deshabilita los errores personalizados Esto permite mostrar los errores detallados estndar

    RemoteOnly Especifica que los errores personalizados slo deben mostrarse en los clientes remotos y que los

    errores de ASP.NET se muestren en el host local. ste es el valor predeterminado

  • 41

    Pginas de ErroresEvent Log

    Global.asax

    protected void Application_Error(object sender, EventArgs e) {

    string logName = "MiniPortal";string message =

    " Url " + Request.RawUrl + "\n" +" Client Address: " + Request.UserHostAddress + "\n" +" Error: " + Server.GetLastError();

    // Create event log if it doesnt existif (!EventLog.SourceExists(logName)) {

    EventLog.CreateEventSource(logName, logName);}

    // Fire off to event logEventLog log = new EventLog();log.Source = logName;log.WriteEntry(message, EventLogEntryType.Error);

    }

    Master Pages

    Java: sistema de plantillas "Tiles"

    ASP.NET 1.x careca de sistema de plantillas Solucin: controles de usuario

    ASP.NET 2.0: "Master Pages" Las Master Pages (pginas maestras) permiten crear

    un diseo comn, que ser compartido por varias Content Pages (pginas de contenido)

    Solucin ms elegante al problema de definir un "lookand feel" comn

  • 42

    Master Pages

    Pgina Maestra (Master Page)

    Pgina de Contenido(Content Page)

    Master pagesPgina maestra

    ASP.NET Tutorial

    ASP.NET Tutorial

    Universidad de A Corua - 2007

  • 43

    Master pagesPgina de contenido

    User name

    Master Pages Las pginas maestras definen el contenido comn y las zonas de contenido

    variable () Es posible definir varias zonas de contenido variable en una misma pgina

    maestra

    Las pginas de contenido hacen referencia a las pginas maestras y rellenan las zonas de contenido variable ()

    Site.master default.aspx http://.../default.aspx

  • 44

    Master PagesContenido por defecto

    Los controles ContentPlaceHolder pueden definir contenido por defecto

    El contenido por defecto se muestra nicamente si la pgina de contenido no lo sobrescribe

    ...

    This is default content that will appear in the absence of amatching Content control in a content page

    Master PagesPginas maestras anidadas

    Es posible crear una pgina maestra que haga referencia a una pgina maestra ya existente Una pgina maestra (padre) define la apariencia general del sitio

    Otra pgina maestra basada en la primera (hija) extiende la apariencia visual del sitio Web

    De utilidad en grandes sitios Web en los que existen subconjuntos de pginas que comparten apariencia visual

  • 45

    Master PagesAplicar una pgina maestra a un sitio Web Es posible designar la pgina maestra de todas las pginas pertenecientes

    a un mismo sitio Web Archivo Web.config

    Todas las pginas que tengan controles Content se combinarn con la pgina principal especificada

    Se asegura que todas las pginas del sitio Web seguirn el diseo de la pgina maestra, incluso aqullas que carezcan de las directivas @ PageMasterPageFile

    Las pginas maestras establecidas utilizando las directivas @ PageMasterPageFile en los archivos .aspx sobrescriben las pginas maestras designadas en el archivo Web.config

    Master PagesPgina maestra segn el navegador

    Es posible seleccionar automticamente una pgina maestra dependiendo del navegador

    Ejemplo:

    Navegadores AvantGo, Default, Docomo, Ericsson, IE, Jphone, MME, Mozilla,

    Netscape, Nokia, Openwave, Opera, Panasonic, Pie, Webtv

  • 46

    Trazas

    ASP.NET soporta traceado de pginas asp Sencillo incluir sentencias de debug

    No necesario debug mediante Response.WriteLine()

    Sentencias debug independientes de la habilitacin de la traza

    Visualizacin de la traza en el propio navegador

    Habilitacin Nivel de pgina

    Nivel de aplicacin

    Traza a nivel de pgina prevalece sobre nivel de aplicacin

    Trazas Objeto Trace

    Tipo: System.Web.TraceContext Accesible a travs de objeto Page

    Mtodos Trace.Write:

    Mensajes Informativos

    Trace.Warn: Mensajes de Error

    Propiedades Trace.IsEnabled:

    True si la traza est habilitada para la aplicacin o la pgina actual

    Trace.Mode SortByTime SortByCategory

  • 47

    TrazasHabilitacin a nivel de pgina

    Directiva Trace

    Incluir sentencias de trazaTrace.Write("INFO", "UserName retrieved");Trace.Warn("Sample of Error Message");

    Acceder pgina .aspx desde el navegador

    Visualizar elementos de traza

    TrazasHabilitacin a nivel de pgina

    ContenidoPgina

    ContenidoTraza

  • 48

    Trazas Informacin contenida en una traza

    Detalles Solicitud SessionID, Get/Post, Hora,

    Informacin Seguimiento Listado llamadas a mtodos

    rbol de Control Controles incluidos en la pgina

    Estado Sesin Variables de sesin

    Estado Aplicacin Variables de Aplicacin

    Cookies Solicitud

    Cookies Respuesta Cabeceras

    Headers HTTP

    Formularios Coleccin formularios

    Cadenas de Consulta Query String

    Variables del Servidor SERVER_NAME ,

    LOGON_USER,

    TrazasHabilitacin a nivel de aplicacin

    Configuracin a travs de web.config

    Llamada a pginas .aspx

    Consulta de la traza http://sitename/AppName/trace.axd

  • 49

    TrazasHabilitacin a nivel de aplicacin http://localhost/trace.axd

    Detalle

    TrazasHabilitacin a nivel de aplicacin

    Opciones configuracin traza enabled

    requestLimit Limita el almacenamiento de las trazas a un nmero especificado

    pageOutput Muestra informacin de traza en la propia pgina Equivalente a traza a nivel de pgina

    traceMode Visualizacin por tiempo (SortByTime) o por categora

    (SortByCategory)

    localOnly Traza nicamente visible en la mquina local