practica de asp.net
Post on 14-Oct-2015
34 Views
Preview:
TRANSCRIPT
-
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
top related