Visual Studio .NET 2008 ASP .NET Programación ASP.NET 1 Javier Roig Garro [email protected] dunbit.blogspot.com dunbitFormacion.blogspot.com dunbitTecnico.blogspot.com
Visual Studio .NET 2008ASP .NET
Programación ASP.NET
1
Javier Roig [email protected]
dunbit.blogspot.comdunbitFormacion.blogspot.com
dunbitTecnico.blogspot.com
1. Introducción. El FrameWork de .NET. 2. El entorno de Desarrollo, características 3. Creación de Formularios Web. 4. Codificación en Formularios Web. 5. Depuración de Aplicaciones Web. 6. Validación de la Entrada de datos. 7. Conceptos básicos de acceso a datos con
ADO.NET 8. Servicios Web XML 9. Manejo de Estado en las Aplicaciones Web
ASP .NET. 10. Configuración, Optimización y Distribución de
Aplicaciones Web ASP .NET. 11. Configuración de la seguridad de las
Aplicaciones Web ASP .NET.
Programación ASP.NET
2
Introducción.NET FrameWork
Commond Laguage RuntimeBiblioteca de clases
ADO .NETASP .NET
User InterfaceConclusión
Programación ASP.NET
3
Definición Modelo de programación consistente para
todas las plataformas Interoperabilidad entre tecnologías Fácil migración Soporte HTML, XML, SOAP
Programación ASP.NET
4
Servicios comunes para ejecutara aplicaciones .net Simplifica la programación de objetos COM+, ya no es
necesario programar el comportamiento entre aplicaciones. .NET Soporta clases, herencia, métodos, propiedades,
eventos, polimorfismo, constructores Commond Languaje Specification. Base compatible para
implementar código con cualquier lenguaje. Visual Studio .NET. Entorno de desarrollo multilingüe.
Programación ASP.NET
5
Commond Languaje Runtime (CLR) . NET Framework library ADO .NET ASP .NET Interfaz de usuario
Programación ASP.NET
6
Descripción Simplifica desarrollo
por un entorno robusto
Soporta múltiples lenguajes
Proporciona un entorno gestionado (Garbage collection, seguridad)
Programación ASP.NET
7
Class Loader. Carga en memoria y prepara para su ejecución MSIL (Microsoft Intermediate Languaje). Convierte MSIL a código
nativo justa antes de ejecutar Code Manager. Gestiona la ejecución del código Garbage Collection. Controla el ciclo de vida de todos los
objetos Security Engine. Permite tener seguridad por el origen del
código y por el usuario Debug Engine. Depurar y realizar trazas del código Type Checker. Evita uso incorrecto de variables no inicializadas Excepcion Manager. Estructura de manejo de excepciones. Thread Suport. Programación multihilo. Com Marshaled. Gestion de comunicación de objetos com .NET FrameWork Class Library Support.
Programación ASP.NET
8
Namespace. Organización Lógica de tipos y clases base relacionadas. Un namespace puede agrupar otros namespaces
System. Contienen definición de las clases fundamentales Sytem.Collections. Ordenación de listas, agrupación de datos System.IO. Entrada y salidad de datos a ficheros, streams. System.NET. Protocolo TCP/IP y control de socket ..... .NET Framework SDK Documentation
Programación ASP.NET
9
Nueva generación de ActiveX Data Object Soporta programación desconectada Provee soporte para XML System.Data. Namespace que contiene la clase
DataSet System.XML Namespace que soporta XML según la
compilación W3C. System.XML.Xsl, soporta transformaciones. System.XML.Serializacion, contiene la base para los
Servicios Web
Programación ASP.NET
10
Apartado del framework que permite desarrollar potentes aplicaciones Web
Elementos ASP .Net Web Forms, permite desarrollar interfaces de usuario ASP .NET Web Services, estructura para construir aplicaciones
web distribuidas ASP .NET Web Services, se basan en protocolos estándar de
internet (HTTP, XML,SOAP) System.Web, clases básicas para el cacheado, seguridad,
configuración System.Web.Services, gestiona los servicios web System.Web.UI, contiene los controles Html (HTMLControls) y
los controles web (WEBControls)
Programación ASP.NET
11
Evolución más flexible de ASP Páginas Web Dinámicas que pueden acceder los
recursos del Servidor Procesamiento del lado del Servidor de Formulario
Web Servicios Web XML que permiten crear
Aplicaciones Web distribuidas Independiente del navegador Independiente del Lenguaje
Programación ASP.NET
12
Uso de herencia, constructores, destructores, sobrecarga, polimorfismo permitiendo la potencia de C#
Estructura de gestión de excepciones anidadas Programación multihilo (multithreading) Garbage Collection, evita que se queden objetos en
memoria sin utilizar. Creación web forms facilmente, programando eventos de los
controles como en formularios clientes Creación de Servicios Web rápidamente a modo de la
creación de componentes de VB 6
Programación ASP.NET
13
El Entorno de DesarrolloSoporte de múltiples lenguajes
Ensamblados y referenciasCompilación y ejecución
Espacios de Nombre - Namespaces
Programación ASP.NET
14
IDE (Integrated Development Evironment) Elementos de un proyecto Uso de las características del entorno Depuración de un proyecto Compilación en .NET
Programación ASP.NET
15
Solo un entorno para todas las herramientas de desarrollo
Una solución puede contener múltiples lenguajes Una solución puede contener múltiples proyectos Personalizar el entorno de trabajo Visor de Internet integrado Depuración de código
Programación ASP.NET
16
Aplicación Windows, Aplicación estándar Librería de Clases, a modo de dll de vb 6 Windows Control Library, Controles definidos por el usuario. ASP .NET Web Aplication, aplicación que se va a ejecutar en un
Internet Information Server. ASP. Web Services, aplicación que va a proveer de servicios XML a
aplicaciones clientes Web Control Library, Controles de usuario para aplicaciones web. Aplicación de consola, se ejecuta en la línea de comandos Otras (Servicios Windows, proyectos vacíos..)
Programación ASP.NET
17
Editor Modo diseño Modo Edición
Explorador de soluciones Mostrar “todos los ficheros” Anidar Elementos relacionados Copiar Sitio Propiedades sitio web
Ayuda Dinámica Propiedades Lista de Tareas
Personalizar elementos Explorador de servidores Caja Herramientas
Data, Web Forms, Components, HTML
Programación ASP.NET 18
Facilita la anotación de temas pendientes Mostrar la ventana
Ver Lista de Tareas CTRL + º, + T
Crear tareas directamente en la lista Se muestran en la sección Tareas de usuario
Crear tareas mediante comentarios en el código Se muestran en la sección comentarios ‘TODO texto de prueba Editar la lista de palabras claves desde: Herramientas
Opciones (Activar la casilla) Mostrar todas las configuraciones Entorno Lista de Tareas
Pulsando doble clic sobre la tarea va a la posición del código asociada
Programación ASP.NET
19
Especificaciones Crear un nuevo proyecto Crear la interfaz Escribir el código Compilar el proyecto Testar y depurar Distribuir / implantar el proyecto
Programación ASP.NET 20
Carpeta para la solución (.sln) Utilizando localhost
◦ Carpeta para los archivos web dentro de inetpub\wwwroot .vbproj, .aspx, web.config, global.asax. Asmx .ascx
◦ Carpeta para el ensamblado inetpub\wwwroot\proyecto\bin◦ .dll
Utilizando sistema de archivos◦ Carpeta para los archivos web dentro de la
ruta del sitio .vbproj, .aspx, web.config, global.asax .asmx .ascx
◦ Carpeta para el ensamblado ruta del sitio\proyecto\bin◦ .dll
Programación ASP.NET 21
Desde el explorador de soluciones Bin .dll App_Browsers .browser App_Code .cs, .vb, .xsd App_Data .mdb, .mdf, .xml App_GlobalResources .resx App_LocalResources .resx App_Themes .skin, .css, .xsl App_WebReferences .wsdl
Programación ASP.NET 22
Establecer puntos de ruptura Propiedades Ventanas Depuración
Variables locales Resultado de la compilación Ventana de Inspección Pila Puntos de Ruptura
Ventana de Comando Cmd, immed
Programación ASP.NET
23
Ensamblados (.dll , .exe y ficheros auxiliares) .Net FrameWork tiene ensamblado predefinidos Se crean automáticamente cuando se construye un
proyecto Referencias a elementos externos del proyecto.
.NET COM Proyectos
Menú Proyecto Agregar Referencia Botón derecho en el proyecto Agregar Referencia
Programación ASP.NET
24
Programación ASP.NET
25
Compilación automática Proceso mejorado ASP NET 2.0 Eliminación pre compilación en el IDE Proveedores de construcción
personalizados Compilación dinámica en dos pasos
Analizar sintácticamente los archivos Compilarlos
Precompilación sobre la marcha
Organización lógica de objetos relacionados Crea Nombres perfectamente identificados para los objetos
Evita ambigüedad Evita conflicto con nombres entre clases
Uso de Import facilita la lectura del proyectoImports MiProyecto.Superior.EnSuperior....Dim y as New Interior()
Se puede acceder a cualquier elemento en un ensamblado mediante su nombre cualificado
Programación ASP.NET
26
Qué es un web FormCrear ASP
Actualizar Html -> ASPTipos de controles Servidor
_VIEWSTATEControles HTMLControles WEB
Controles Personalizados
Programación ASP.NET
27
Combinación de código HTML + controles que se ejecutan en el servidor
Diferencia con ASP tradicional Extensión .aspx Pueden coexistir con páginas .asp
o .html Ficheros .aspx.vb /.aspx.cs contienen el
código asociado
Programación ASP.NET
28
Tres niveles de atributos Page, Definen funciones globales <%@ Page Languaje=“vb” CodeFile=“WebForm1.aspx.vb” SmartNavigation=“true” %><%@ Page Languaje=“c#” CodeFile =“WebForm1.aspx.cs”
SmartNavigation=“true” %> Código, gestión de eventos del formulario
<script> </script> LayOut, presentación de los datos
Body, Como se va a mostrar la página< body>....</body>
Form, como se procesan grupos de control< form id=“Form1” method “post” runat=“server”>....</form>
Programación ASP.NET
29
Languaje Lenguaje en el que está escrita Vb, c#, jscrip
CodeFile Qué página contiene el código
Inherits Clase con la que va a trabajar
AutoEventWireup Si hay que especifiacar los procedimientos para los
eventos o los toma dependiendo del nombre del procedimientos
Programación ASP.NET
30
Código para ejecutar eventos del cliente <script runat=“server”> el evento se ejecuta en
el servidor Se recomienda programar los eventos de servidor
en el fichero de código asociado para diferenciarlo del código que va a interpretar el navegador
Programación ASP.NET
31
No tiene que ver con el concepto de formulario Puedes tener varios <form> .. </form> en una web pero
solo uno que se ejecute en el lado servidor Method, como se envian los valores al servidor
Post, datos se envian en parejas nombre/valor dentro de la peticion http
Get, datos se pasan como un estring Runat,identifica si se devuelve información al servidor
Runat=“server”, envia la información al servidor No tiene, se ejecuta como un formulario HTML
Programación ASP.NET
32
Nueva Sitio Web Crea por defecto Default.aspx
Añadir un nuevo formulario Mediante la opción añadir nuevo elemento
Actualizar un formulario existente html Renombrando el archivo a .aspx
Programación ASP.NET
33
HTML server controls Añadir runat=“server” para tratarlo en el modo servidor
Web server controls Integrados, equivalentes a los controles HTML Validación, testar los datos introducidos Enriquecidos, funcionalidad avanzada Enlazados a datos Controles Web, presentación de datos en navegadores
Programación ASP.NET
34
Acceso desde el lado de servidor Las propiedades son todas tipo String, por lo que
solo se detecta los errores cuando se ejecuta Esta dentro de una etiqueta <Form ...
Runat=“server”> Interesa cuando utilizan funciones de java Permite actualizar rápidamente una página html
con nuevas funcionalidades<input type=“text” id=“textname” runat=“server”>
Programación ASP.NET
35
Creados para ASP.NET No tienen funcionalidad si no tienen
una etiqueta runat=“server” Propiedades son tipadas, permite
detectar errores antes de compilar Namespace
System.Web.UI.WebControls
Programación ASP.NET
36
Cada vez que se pide una página se construye la página y todos sus controles y se destruye después de que se envié al navegador para aumentar la capacidad del servidor
Soluciona el problema de que se limpien los controles cuando viaja entre el servidor y el cliente.
Control oculto _VIEWSTATE, guarda el estado dentro de una sección <form ... Runat=“server”>
Contiene un string de pares nombre-valor, con los nombres de cada control y el último valor
Cada petición se actualiza el control Habilitar viewState a nivel de @Page o a nivel de
control<%@ Page EnableViewState=“true” %><asp:ListBox id=“ListName” EnableViewState=“true”
runat=“server”></asp:listbox>
Programación ASP.NET
37
Creación en tiempo de Diseño Desde la barra de herramientas de controles Creación del código HTML de forma directa
Posicionamiento Absoluto o relativo Herramientas Opciones Diseñador HTML Posición CSS
PostBack Hay controles que automáticamente generan un postback
(button) Otros controles (textbox) no lo tienen y sus eventos se
disparan cuando uno que si lo tiene se ejecuta Se puede modificar el comportamiento modificando la
propiedad AutoPostBack a True del control
Programación ASP.NET
38
Programación ASP.NET
39
Control de servidor Equivalente HTML Función
<asp:button> <input type=submit> Crea un botón que envia una petición al servidor
<asp:checkbox> <input type=checkbox> Casilla de verificación
<asp:hyperlink> <a href=“...”> </a> Hiperenlace a una etiqueta HTML
<asp:image> <img srec=“...” > Crea un área para mostrar una imagen
<asp:imagebutton> <input type=image> Botón con imagen en vez de texto
<asp:LinkButton> No tiene Botón con apariencia de hiperenlace
<asp:label> <span> </span> Texto que no puede modificar el usuario
<asp:listbox> <select size=“5”></select>
Lista de elementos de selección múltiple
Programación ASP.NET
40
Control de servidor Equivalente HTML Función
<asp:panel> <div></div> Panel contenedor de controles
<asp:radiobutton> <input type=radiobutton>
Botón de radio
<asp:table> <table> </table> Crea una tabla
<asp:textbox> <input type=text> Cuadro de texto
<asp:literal> No tiene Texto
Programación ASP.NET
41
Control Función
CompareValidator La entrada tiene que coincidir con otra entrada
CustomValidation La entrada tiene que cumplir un criterio
RangeValidator La entrada tiene que estar en un rango
RegularExpressionValidator
Tiene que cumplir un patrón
RequiredFieldValidator Usuario tiene que entrar un valor antes de que se procese el control
ValidationSummary Recoge todos los mensajes de error de los controles de validación para mostrarlos centralizados
Programación ASP.NET
42
Control Función
AdRotator Secuencia de imágenes, aleatorias o no
Calendar Muestra un calendario
Programación ASP.NET
43
Control Función
CheckBoxList Columna de valores en formato checkbox
Repeater Muestra información de un dataset utilizando un conjunto de controles HTML, se repite para cada valor del dataset
DataList Similar al repeater pero en formato lista
DataGrid Muestra la información de un dataset en columnas
DropDownList Muestra los datos en un desplegable
ListBox Muestra los datos en una ventana
RadioButtonList Muestra una columna de botones de opción
GridView Versión avanzada del Data grid
Label, Muestra información que se puede modificar desde el código
del servidor Para texto fijo mejor utilizar el control literal de HTML Utilizar la propiedad text para escribir el valor
TextBox Muestra y recoge información del usuario Propiedad text contiene el texto del textbox TextMode, Formato del cuadro de texto
SingleLine, Multiline, Password Columns, Rows, máximo ancho y largo del cuadro de texto MaxLength, número de caracteres máximo
Programación ASP.NET
44
Button Boton que genera un postback al servidor Tipo submit (por defecto), solo genera un postback
al servidor Tipo command, indicar el nombre de la acción en la
propiedad commandName. Se gestiona con el evento command
Propiedad CausesValidation, por defecto true, hace que se valide el formulario
CheckBox Permite seleccionar entre cierto y falso Checked indica su estado Text, el literal que muestra Evento CheckedChange se ejecuta cuando hay un
cambio en la propiedad check. Autopostback por defecto es false
Programación ASP.NET
45
RadioButton Seleccionar opciones de forma exclusiva
en un grupo GroupName, todos los que tengan el
mismo valor se validan juntos Text, contiene el título Checked, indica si está activo o no
Programación ASP.NET
46
Trabajar con imágenes <img src=rutainmagen /> Controles Asp.net
Image Muestra una imagen en la web Imageurl, indica la dirección de la imagen AlternateText, texto que muestra si no se carga la imagén, y en
el texto de ayuda GenerarteEmptyAlternateText, indica si queremos que se
genere texto alternativo de forma automática No tiene evento Click
Programación ASP.NET
47
ImageButton Muestra una imagen que si que tiene evento Click ImageUrl, dirección de la imagen Eventos Click y command iguales al del boton
ImageMapcontrol Similar al imagebutton pero puedes definir un área para que
sea clickeable ImageUrl, es la imagen a mostrar HotSpotArea, comportamiento cuando se pincha en un área de
la imagen PostBack, generar un postback al servidor pudiendo pasar un
texto como parámetro Inactive, no hace nada
Programación ASP.NET
48
Table Muestra una tabla que se puede modificar en tiempo de
ejecución añadiendo TableRow y TableCell Hay que redibujar el control cada vez que sucede un postback
Calendar◦ Presenta un calendario, donde el usuario puede seleccionar
fechas◦ SelectionChanged genera un postback◦ Evento DayRender, poner texto cuando se cambia de día◦ VisibleDate, mes que se quiere mostrar◦ SelectionMode, como queremos seleccionar la información del
control FileUpload
◦ Muestra los controles para subir un archivo a internet◦ Hay que programar si queremos guardar el fichero◦ No genera un postback, por lo que hay que utilizar otro control◦ HasFile, indica si es un fichero lo que se ha selccionado◦ SaveAs, metodo para guardar el fichero
Programación ASP.NET
49
Web.SiteMap XML con la representación del sitio web
SiteMapPath Representa web.sitemap
SiteMapDataSource Enlaza con el XML y permite utilizarlo con otros controles StartingNodeOffset
TreeView Representación de un SiteMapDataSource Formado por TreeNode Permite colapsarse o expandirse
Menu Representación de un SiteMapDataSource Formado por MenuItem Permite programar eventos servidor o redirección a páginas
Programación ASP.NET
50
ListBox, lista de datos Utiliza la colección Items que contiene todos los
elementos Cada uno tiene la propiedad Text que es lo que muestra y
Value que es lo que devuelve al servidor Se enlaza a un DataSource y a un DataMember SelectedIndex, SelectedItem, SelectedValue es la forma
de acceder al elemento seleccionado DropDownList
Similar al listBox, pero solo muestra los valores cuando se despliega la lista
Programación ASP.NET
51
CheckBoxList Similar al listbox donde se puede hacer la selección
marcando las casillas RepeatDirection y RepeatColumns son propiedades para
indicar como rellenar el control con los valores Selected, indica si el item está seleccionado
RadioButtonList Similar al chekboxList pero solo se puede seleccionar una
opción
Programación ASP.NET
52
AdRotator Muestra una lista de imágenes de forma aleatoria Obtiene la información de una base de datos o de un
fichero xml ImageUrl, dirección de la imagen NavigateURL, la dirección donde se va al pulsar Impressions, frecuencia con la que se muestra Height, altura de cada anuncio Widt, anchura de los anuncios Recomendable dejar las imágenes dentro de la carpeta
App_Data
Programación ASP.NET
53
Simplifica la reutilización de código y componentes del entorno de usuario.
Es un fichero .ascx Se compilan la primera vez que se llaman y se almacenan en la
caché de ensamblados Tienen que estar integrados en un formulario, no puede contener
etiquetas <HTML>, <BODY>,<FORM> Tiene código asociado, se identifica en el apartado @control en vez
de @Page<@ control Language=“vb” CodeFile=“WebUserControl1.ascx.vb”
inherits=“test.webuserControl1” %>
Se puede escribir en distinto lenguaje que el formulario
Programación ASP.NET
54
Creación a partir de Visual Studio .NET Las páginas interactúan con el control
mediante propiedades Recomendable el uso de flow layout Añadir los elementos de la interfaz de
usuario Añadir los procedimientos que interactúen
con el Webform que lo albergue
Programación ASP.NET
55
Quitar las etiquetas <HTML>, <BODY>,<FORM> Si existe la directiva @page, sustituirla por una
@control Renombrar la página de .aspx a .ascx En la clase indicar
inherits=System.web.UI.UserControl Crear las propiedades ya que el webform no
puede comunicarse directamente con los controles que forman el control de usuario
Programación ASP.NET
56
<%@ Register TagPrefix=“demo” TagName=“NumeroValido” Src=“CajaNumero.ascx %>
Se situa en un web form igual que cualquier otro control @register, se utiliza para incluirlo en un formulario TagPrefix, identifica un espacio de nombres, permite tener
varios controles sin conflicto TagName, nombre único para cada control Src, identifica el control No podemos utilizar posicionamiento absoluto con DHTML,
si lo queremos hacer tenemos que ponerlo dentro de un panel
Programación ASP.NET
57
Definir las propiedades del control, haciendo referencia a los controles internos
Public Property pnum() as integerGet
Return cint(txtnum.text)End GetSet (byval value as Integer)
Txtnum.text =value.tostring()End Set
End Property Uso de las propiedades del control, desde el WebForm que lo contiene
Protected Num1 as CajaNumeroLblsum.text=Num1.Nnum.ToString()Num1.Pnum=5
Programación ASP.NET
58
Definición Página Maestra estructura heredable Página Contenido personalizas cada página
Beneficios Sitio web con entorno consistente Ahorro de tiempo de programación Podemos tener varias páginas maestras en un proyecto
Añadir una página Maestra Añadir desde Explorador de Soluciones un nuevo archivo index.Master
Añadir una página de Contenido Añadir desde el explorador de soluciones un nuevo archivo del tipo
Web.Form activando la casilla Seleccionar página maestra
Programación ASP.NET
59
Páginas de código-behindEventos en Controles Web Server
Eventos de PáginaConcepto de PostBack
Ejemplos de código
Programación ASP.NET
60
En el mismo fichero, entre el HTML Difícil, seguir el código Utiliza en ASP Pueden utilizar varios idiomas
En el mismo fichero, en una sección aparte Separado en una sección SCRIPT<SCRIPT Languaje=“vb” runat=“server”>
Sub btn_click(s As Object, e As EventArgs)_ Handles btn.Click....End Sub
</SCRIPT> En un fichero separado
En la página de código asociado Cada fichero sólo puede contener un idioma
Programación ASP.NET
61
Acción que responde a una actuación del usuario con un control de la página
Tipo de evento por área de ejecución Eventos de servidor Eventos de cliente
Ejemplo de evento Pulsar un botón Submit
Programación ASP.NET
62
Se ejecuta en el equipo cliente, no se envía información al servidor
Solo para controles HTML Ejecutan inmediatamente Eventos tipo onChange y mouse Keys Sintaxis
<SCRIPT languaje=“javascrip”>
Programación ASP.NET
63
Se ejecuta en el equipo servidor, la petición se envía al servidor para su proceso
Los procedimientos de evento es código compilado que está en el servidor
Sirve para controles HTML y Web Soporta un número menor de eventos, por la demora del
envío de la información Algunos OnChange NO soporta MouseKeys
Sintaxis<SCRIPT languaje=“vb” runat=“server”><SCRIPT languaje=“c#” runat=“server”>
Programación ASP.NET
64
Acceso a los eventos Al hacer doble clic sobre un control, se crea un evento
con el mismo Id que el control Seleccionar el evento de la lista Seleccionar el botón eventos en las propiedades del
control Argumentos
El objeto que envía el evento (sender) Una instancia del evento (e)
Tipo EventArgs, sin informacion adicional Imágenes ImageClickEventArgs, información
de coordenadas Utilizar Ctype para convertir sender
Programación ASP.NET
65
AutoEventWireup Si hay que especificar los procedimientos para los
eventos o los toma dependiendo del nombre del procedimientos
Gestionar varios controles con HANDLED Procedimientos de eventos personalizados
AddHandler AddressOf
Programación ASP.NET
66
Orden de generación de los eventos Page_init Page_Load Eventos de Control Page_Unload
Hay eventos de control que no se ejecutan hasta que el Web Form se envía al servidor (Change)
PostBack, envío de información al servidor Se puede forzar si el control tiene la propiedad
AutoPostBack=true
Programación ASP.NET
67
El evento Page_Load se ejecuta cada llamada Propiedad page.isPostBack, determina si ya se ha
enviado al servidorIf not Page.IsPostBack then
‘ Ejecuta solo la primera vez
End IfIf (!Page.IsPostBack){
//ejecuta la primera carga}
Programación ASP.NET
68
Acceso a los controles de una página web Objeto Me Colección de controles
Escribir información Asignar la información según el tipo
control.propiedad=valor Leer información
Almacenar la información en una variable Utilización en una función
Variable=control.propiedad If control.propiedad then..
Programación ASP.NET
69
Asignar la imagen en tiempo de ejecución Propiedad imgUrl Objeto Application.MapPath Identificar la ruta a partir de la raiz “~” (alt 126)
Crear imágenes de distinto tamaño en tiempo de ejecución Clase Bitmap
Gestiona mapa de bits Permite Guardar en formato bmp, jpg, gif, png con método save GetThumbnailImage
Programación ASP.NET
70
Colecciones de elementos Propiedad items
Escribir información Método ADD de la propiedad items Asignar a un origen de datos
Leer información Elemento Seleccionado Recorrer la colección items
Programación ASP.NET
71
Crear menús en tiempo de ejecución Crear el nodo o el elemento Añadir el nodo al menú o al árbol Propiedad Items y ChildItems en los menús Propiedad Nodes en losTreeview
Leer información Recorrer el menú/árbol mediante los nodos
Responder al Evento Propiedades SelectedNode,
SelectedMenuItem
Programación ASP.NET
72
Propiedades Se definen en el fichero de código adjunto Especificar el apartado Get y Set
Escribir información Ejecuta el código del apartado Set Desde la página se utiliza control.propiedad=valor
Leer información Ejecuta el código del apartado Get Desde la página se utiliza Variable=control.propiedad
Eventos Se programan en el control de usuario
Programación ASP.NET
73
Desde la página Maestra Trabajar como una página normal Se ejecutan en el código de master.vb
Desde las páginas de Contenido Personalizar la ejecución del evento según la página Gestionar el evento de un control
Hacer accesible el control con una propiedad master.vb
Gestionar el evento desde la content aspx.vb Gestionar con eventos personalizados genéricos
Crear un evento personalizado Lanzar desde la master el nuevo evento master.vb Consumir el evento desde la content aspx.vb
Programación ASP.NET
74
Información en tiempo de ejecuciónActivar la Traza
Utilizar el objeto TRACEUso de Traza a nivel de Aplicación
Página de Error Personalizada
Programación ASP.NET
75
Activar modo depuración De forma automática Mediante la herramienta de configuración Añadiendo debug=true en web.config
Establecer puntos de ruptura Pausar el código al ejecutar la sentencia marcada Se puede establecer condiciones
Ventanas Depuración Variables locales Ventana de Inspección Puntos de Ruptura
Programación ASP.NET
76
Volcar información mediante objetos Debug y Trace Tipos de información
Mostrar valores de variables Determinar cuando se cumple una condición con Trace.Writeif Seguir el proceso de ejecución
Las sentencias Trace no se muestra sino se activa en web.config o en la cabecera @page No es necesario quitar o comentar todo el código
El objeto Debug solo se muestra cuando se ejecuta en modo depuración
Programación ASP.NET
77
A nivel de página, solo muestra información de traza en la página en la que se activa
<%@Page Languaje=“vb” Trace=“true” %> Se añade la información de traza al final de la página Todos las sentencias Trace.Write serán visibles
Si se activa la traza a nivel de aplicación, también se muestra la información de página
Programación ASP.NET
78
Trace.Write y Trace.Warn son iguales salvo que Warn muestra el mensaje en rojo.
Muestran mensajes en la traza Sintaxis
Trace.Write(“Categoria”,”Mensaje”) Categoría, sirve para agrupar los mensajes
EjemploTrace.Write(“Mi traza”, “Empieza el código de usuario”)
Trace.IsEnabled indica si la traza está activa Se puede modificar en tiempo de ejecución
Trace.IsEnabled=False ‘ Desactiva la traza
Programación ASP.NET
79
Muestra la información al final de la página Divide la información
Información de la solicitud Información de Seguimiento, datos tanto estándar como los generados
por el objeto TRACE Árbol de Control, los elementos y su tamaño Estado de la sesión, variables de sesión Estado de la aplicación, variables globales Lista de Cookies, lista de cookies utilizadas en metodos recuest Lista de Cookies de respuesta, lias de cookies en métodos response Colección de encabezados, información de la cabecera HTML Colección de formularios, valores devueltos al servidor Colección de cadenas de respuesta,valore sen querystring Variables de servidor, las variables del servidor
Programación ASP.NET
80
Aplica la traza a todas las páginas del proyecto Menú Sitio Web Configuración ASP .NET Aplicación Depuración y
Seguimiento Capturar información de seguimiento Modificar el fichero web.config
<trace enabled=“true” pageOutPut=“true” LocalOnly=“true”/> Relación con el atributo trace de @page.
Si está activo en @page, se muestra siempre Si no está definido se muestra siempre Si está a false no se muestra la traza
Mostrar seguimiento.. (PageOutPut), indica si se muestra la información en la página o si se almacena en memoria
Cuando está en memoria ejecutar \\servidor\proyecto\trace.axd Mostrar resultado para.. (LocalOnly), solo se muestra la traza en la máquina
local. No se puede acceder desde otra máquina
Programación ASP.NET
81
Redirigir el error ha una página amigable para el usuario
Se define en el web.config Directamente editando el fichero Desde la herramienta de configuración de la aplicación
Podemos utilizar cualquier página del proyecto Atributos
CustomErrorPage la página a mostrar LocalOnly si se ven los errores en local o no
Programación ASP.NET
82
Utilidad de los controles de validaciónTipos de controles
Propiedades comunesControl personalizado
Page.IsValid
Programación ASP.NET
83
Verifican que los datos son “válidos” o que se han introducido todos los valores necesarios
Evitan Datos incorrectos antes de que se procesen en el servidor Spoofing, sustitución de código HTML en el cliente, mediante la
verificación de los datos en los dos lados cliente/servidor Código malicioso, provocar desbordamiento del servidor con cadenas
de texto muy largas y SQLInyection mediante los input box Verificación en el lado cliente y servidor
Cliente, comprueba cuando se pulsa un botón submit, si no se cumple no envía la información al servidor
Servidor, se vuelve a validar la información
Programación ASP.NET
84
CompareValidator, compara el contenido de ese control con el de otro control del mismo WebForm.
Type indica el tipo de datos a comparar Operator, tipo de comparacion
CustomValidator, código de comprobación personalizado RangeValidator, Comprueba que el valor esta dentro de un
rango. Type indica el tipo de datos a validar Hay que indicar MinimunValue, MaximumValue
RegularExpressionValidator, el contenido tiene que cumplir un formato determinado
www.regular-expressions.info RequiredFieldValidator, Obliga a introducir un valor en el
campo, se puede usar junto con los otros controles ValidationSummary, resumen de los errores de los
controles de validación de la página
Programación ASP.NET
85
Todos los controles de validación menos el ValidationSummary tienen propiedades especificas comunes◦ Controltovalidate, control de la página a validar◦ EnableClientScript, validar los datos en el cliente◦ ErrorMenssage, texto que va a mostrar si no se cumple el
criterio en el control ValidationSummary.◦ Text, mensaje que muestra en el caso de error, si se deja en
blanco muestra el texto que haya en ErrorMenssage◦ Display, comportamiento de los controles en el caso de
FlowLayout Static, reserva espacio para las etiquetas aunque no se muestren Dynamic, no reserva espacio, cuando se muestra el error, se ajusta
el formulario None, no muestra errores
Programación ASP.NET
86
Se ejecuta en el lado del cliente y servidor Permite programar código Propiedades propias
ClienteValidationFunction, nombre del script que se ejecuta en el cliente
OnServerValidate, nombre del que se ejecuta en el servidor
Programación ASP.NET
87
Propiedad del objeto Page que es true si todos los controles de validación son correctos
Cuando se ejecuta se muestra el control ValidationSummary si es el caso
If Page.IsValid then
lblResultado=“Correcto”End If
Programación ASP.NET
88
PresentaciónControles Enlazados
DataBinding
Programación ASP.NET
89
Modelo ASP 2.0 vs ASP 1.1 Nuevos controles
Más ligeros Más fáciles de utilizar Menos código para obtener los mismos resultados
DataBindig Enlazar controles a un origen de datos Simple, enlaza un control a un campo del origen de datos. Compleja, enlazar un control a varios campos de un origen de
datos App_Data
Carpeta por defecto para establecer los orígenes de datos Puede contener Access (mdb), SQL Express (mdf), XMl
Programación ASP.NET
90
Tipos Específicos para enlazar a origen de datos GridView Generales, se pueden enlazar aunque con limitaciones TextBox Mixtos, permiten trabajar con un origen de datos o
independientes ListBox Controles de Acceso a datos, no son visibles pero permiten enlazar
a otros controles SQLDataADapter
Cadenas de conexión Genera automáticamente en función del origen de datos Muestra por defecto el contenido de App_Data Permite guardarlas en web.config
DataSource vs DataSourceid DataSourceId, indica el control de origen de datos, en
cambio Datasource indica el objeto de origen de datos
Programación ASP.NET
91
SqlDataSource Enlaza con un origen de datos SQL (no solo SQL Server) Especificar base de datos, consulta/ tabla, filtros,
ordenacion AcessDataSource
Enlaza con bases de datos Access Igual que el anterior pero más limitado
ObjectDataSource Enlaza con objetos de negocio definidos en una clase Seleccionar el objeto y los métodos a utilizar
XmlDataSource Enlaza con un origen de datos XML Especificar archivo, el archivo de transformación (si es necesario) y
xPath para indicar el tipo de nodo a mostrar SiteMapDataSource
Enlaza con web.sitemp para crear la estructura de navegación del sitio
Programación ASP.NET
92
ListBox, DropDownList, CheckBoxList, RadioButtonList, BulletedList
Permiten trabajar enlazados a datos o de forma independiente
Tienen propiedades comunes para el enlace a datos DataSourceId, identificador del control origen de datos de
donde van a cargar la información DataValueField, nombre del campo con el que se rellena la
propiedad value de cada item DataTextField, nombre del campo con el que se rellena la
propiedad text DataMemeber, en el caso de que el origen de datos tenga
varios conjuntos de resultados, indicar el que se va a utilizar
Programación ASP.NET
93
Repeater Muestra información de cada registro del origen de datos en
una fila Hay que especificar los campos que se quieren mostrar desde
la ventana de código DataList
Muestra la información de cada registro del origen de datos en una fila del control
Permite indicar que campos queremos mostrar mediante plantillas
Es la versión avanzada de Repeater
Programación ASP.NET
94
GridView Muestra información en formato tabla Esta formado por una colección de GridViewRow (Filas) y
DatacontrolField (Columnas) que dan lugar a DataControlFieldCell (Celdas)
Cada Fila contiene una colección de celdas (cell) Formato se puede dar mediante el asistente
DetailsView Muestra únicamente un registro de un origen de datos Permite navegar por los registros con la propiedad AllowPaging Se utiliza junto a Gridview para crear formularios
“maestro/detalle” FormView
Similar a Details View, pero con más funcionalidad Permite la edición de plantillas para los distintos modos,
selección, edición e inserción
Programación ASP.NET
95
Enlazar controles a un origen de datos Propiedad DataSource, identifica el origen de datos
puede ser un dataSet, Propiedad DataSouerceID, indica el control origen de
datos que está vinculado a los datos Propiedad DataMember, dentro de un origen de
datos con múltiples tablas puede especificar la tabla o la vista que queramos asociar
Propiedad DataKey, el campo clave del control cuando se selecciona un elemento del mismo
Metodo DataBind, actualiza los datos que recibe a través de la propiedad DataSource.
Programación ASP.NET
96
PresentaciónIntegración con DataSet de ADO
XMLDataDocumentXMlDataTransform
Control Web XMLServicios Web
Programación ASP.NET
97
Método uniforme de intercambiar datos entre ordenadores Están definidos tanto los datos como la estructura La estructura es independiente de los datos y se puede
ampliar en cualquier momento Concepto de XML Bien Formado XML Válido si el vocabulario cumple con el formato del
esquema XSD, Schema Definition Language, norma recomendada por
W3C para validar XML
Programación ASP.NET
98
XSD, estándar de definición de lenguajes XSLT, Extensible Stylesheet Transformation,
lenguaje para transformar ficheros XMl XPath, Lenguaje para recorrer elementos de un
XML mediante un árbol de nodos DOM, Document Object Model, es una
representación en memoria de un XMl que se puede navegar por él mediante nodos
XQuery, permite extraer e interpretar información XML
Programación ASP.NET
99
Estándar de internet. World Wide Web Consortium (W3C) XML 1.0 - http://www.w3.org/TR/1998/REC-xml-19980210 -
including DTD support. XML Namespaces - http://www.w3.org/TR/REC-xml-names/ -
both stream level and DOM. XSD Schemas - http://www.w3.org/2001/XMLSchema XPath expressions - http://www.w3.org/TR/xpath XSLT transformations - http://www.w3.org/TR/xslt DOM Level 1 Core - http://www.w3.org/TR/REC-DOM-Level-1/ DOM Level 2 Core - http://www.w3.org/TR/DOM-Level-2/
En el Framework es el espacio de nombres System.Xml
Programación ASP.NET
100
Cargar información en un dataset desde un fichero xml ReadXML, lee los datos y el esquema y lo pasa a un data
set Lee desde un objeto xmlReader (string, filestring)Dim xmlFilename As String = "XmlDocument.xml" Dim fsReadXml As New System.IO.FileStream _ (xmlFilename,
System.IO.FileMode.Open) Dim xmlReader As New System.Xml.XmlTextReader(fsReadXml) Dim ds As New DataSet("New DataSet") ds.ReadXml(xmlReader)
Programación ASP.NET
101
Exportar el contenido de un data set a un fichero XML WriteXML, escribe los datos y el esquema a
un objeto stream, string, TextWriter, xmlWriter
xmlWriter, escribe sobre un fichero XMLDim ds As DataSetDim writer As new XmlWriter (Server.MapPath(“export.Xml”))
ds.WriteXml(writer)
Programación ASP.NET
102
Metodos de DataSet ReadXmlSchema,Leer el esquema de un
data set de un fichero XML. No los datos WriteXmlSchema,Escribir el esquema en
un fichero, no los datosDim ds As DataSetDim writer As XmlWriter
ds.WriteXmlSchema(writer)
Programación ASP.NET
103
Muy ligado a los DataSet, permite manipular los datos directamente o a través del dataSet
Permite navegar mediante nodos Podemos utilizar como elemento para la trasformación de
XML con xmlTransform Load, cargar la información directamente del documento
XMLDataDocument doc = new XmlDataDocument;Doc.Load(server.MapPath(“file.xml”));
ReadXML, carga el documento en un datasetDim doc as XmlDataDocument = new XmlDataDocument() doc.DataSet.ReadXML(Server.MapPath("store.xml”))
Programación ASP.NET
104
El DataSet del objeto es la representación en ADO de la estructura del XML
Asignar a un control el origen de datosDg.DataSource = xmlDoc.DataSet
Extraer informaciónDim elem as XmlelementElem= xmlDoc.getElementFromRow(ds.Tables(0).rows(1))
Programación ASP.NET
105
Permite escribir un fichero XML o mostrar información XML en el WebForm
La información se muestra donde está ubicado el control
Crear un control Llevándolo desde la barra de controles Escribiendo <asp:XML id=“xmldoc” runat=“server”/>
Programación ASP.NET
106
Cargar datos al control Propiedad DocumentSource, indicando la ruta del xml En el evento Page_Load, asignar la ruta a la propiedad
Document. Introducir el texto entre la etiquetas < >
TransformSource, permite asignar un fichero de esquema control
Crear un objeto XML y asignarlo a un control
Programación ASP.NET
107
Similar a los componentes de programación Lenguaje independiente que el del web form Independiente de la plataforma de desarrollo. Basado en estandares de W3C Se utiliza para compartir elementos de
programación entre aplicaciones.
Programación ASP.NET
108
Universal Description, Discovery and Integration (UDDI) protocol www.uddi.org, uddi.microsoft.com Especificaciones para ubicar servicios web a través de
internet Ficheros descubrimiento .disco .vsdisco, contienen
la información de donde encontrar servicios. Se crean automáticamente cuando se programa el servicio
Ficheros de descripción .wsdl, tiene las especificaciones del servicio web
Programación ASP.NET
109
Acceder a la página web del servicio. WsdlHelpGenerator.aspx
Seleccionar el servicio de la lista Rellenar los parámetros si es caso y
clicar en Invocar El servicio devuelve la información en
XML
Programación ASP.NET
110
Añadir la referencia Web al proyecto Crear un objeto a partir de la referencia
Dim ws as new prueba.localhost.servicio1
Utilizar los métodos del servicio web a través del objeto Lbltitulo.text=ws.escribirHolaMundo
Programación ASP.NET
111
Crear un proyecto utilizando la plantilla Servicio Web. Archivo .asmx
@web Service, el nombre del archivo Languaje, en que está escrito Codebehaind page, código del archivo Class, la clase del servicio
El código se escribe igual salvo que se pone <webmethod> delante de la función que queremos compartir <WebMethod(Description:= “texto descripción”)>, La
descripción del servicio web
Programación ASP.NET
112
Introducción al estado de las aplicacionesGlobal Asax
Cookies
Programación ASP.NET
113
Cada página se destruye en cada petición, necesario un sistema para mantener la información globalmente
Lado del servidor Application, la información es accesible para todos los usuarios Session, la información solo es accesible para un usuario en
concreto SQL, almacenar la información en una base de datos Objeto Caché, guarda la información a nivel de aplicación
Lado del cliente Cookies, fichero de texto en el equipo del cliente Propiedad, ViewState, automáticamente retine los valores Query String, se añade la información a la URL
Programación ASP.NET
114
Todas las aplicaciones tienen un global.asax
Se almacena en el directorio virtual de la aplicación
Gestiona eventos de inicio y fin de aplicación y de sesión
Es opcional
Programación ASP.NET
115
Eventos más usuales Applcation_Start, cuando se inicia la aplicación Application_End, cuando se finaliza Session_Start, cuando inicia un usuario Session_End, cuando Finaliza un usuario Application_Error, Cuando se da un error que no ha sido canalizado
Inicialización de Variables Objeto Application, comparte información para toda la aplicación Objeto Sessión, solo sobre el usuario Se define la variable identificando el objeto y el nombre que queremos
darleSession(“Fondo”)=“beige”Application[“numeroVisitas”]=0;
Programación ASP.NET
116
Establecer valor a la variableSession(“Fondo”)=“beige”
Bloqueos, evitar concurrencia Application.Lock Application.Unlock
Application.LockApplication[NumeroVisitas]+=1(int)Application[“NumeroVisitas”]=(int)Application[“NumeroVisitas”]+1;
Application.Unlock
Leer las variables, asignar el valor a un objeto o controlFondoControl=Session(“Fondo”)lblNVisitas.text=Application[“NumeroVisitas”].to string
Programación ASP.NET
117
Almacena automáticamente el estado de los controles de la página
Se puede desactivar desde la directiva @page ViewState=“False” Almacena la información en objetos StateBag que se pasa como
control oculto en las peticiones http Podemos utilizarlo para almacenar información entre páginas Se puede cifrar con viewStateEncryptionMode =Always
Programación ASP.NET
118
Public Property Indice() As Integer Get Dim o As Object = ViewState("Indice") If (IsNothing(o)) Then Return -1 Else Return CStr(o) End If End Get Set(ByVal value As Integer) ViewState("Indice") = value End Set End Property
public int Indice { get { object o = ViewState[“Indice"]; return (o == null)?-1 :(int)o; } Set { ViewState[“Indice"] = value; } }
Crear cookies Con la propiedad Cookie de los objetos Response y
Request Generan un objeto HttpCookiecollection
Cookies Temporales Se crea el objeto pero no se guarda en disco. Se borra cuando acaba el tiempo de sesion o cuando se
cierra el navegador Cookies Permanentes
Se guardan en disco
Programación ASP.NET
119
Crear un cookieDim objCookie as new httpCookie(“miCookie”)Dim now as datetime=dateTime.Now
Añadir elementos y asignar valoresobjCookie.Values.Add(“hora”, now. To string)objCookie.Values.Add(“Fondo”,”green”)
Establecer tiempo de expiración PersistenteobjCookie.Expires=now.addHours(1)
Añadimos el cookie a la colección Response.cookies.add(objCookie)
Programación ASP.NET
120
Primero leer el cookieDim objCK as httpCookie=Request.Cookies(“myCookie”)httpCookie objCK=Request.cookies[“myCookie”];
Segundo leer el par clave – valorlblTime.text=objCK.Values(“hora”)lblTime.BackColor=System.Drawing.Color.FromName(obkCK.Values(“Fondo”))Lbltime.text=objCK.values[“hora”]lblTime.backColor=System.Drawing.Color.FromName(obkCK.Values[“Fondo”]);
Programación ASP.NET
121
Objeto CachéOutPut Cache
Implantación del proyecto
Programación ASP.NET
122
Cada aplicación tiene un objeto Permite almacenar elementos en memoria la primera vez
que se utilizan y a partir de ese momento volver a utilizarlos El objeto Cache no contiene información solo la referencia al
objeto y sus dependencias Podemos usarlo para pasar valores entre páginas de la
aplicación ya que permite almacenar variables a nivel de aplicación
Tiene bloqueos incorporados para el uso de los objetos Se eliminan automáticamente los objetos de la caché, junto
con sus dependencias
Programación ASP.NET
123
Crear una variable de forma implicitaCache(“mivariable”)=valorCache[“mivariable”]=valor;
Crear variables de forma explicita con Insert y parámetros
Cache.Insert(“miVariable”,valor, Dependency, AbsoluteExpiration, SlidingExpiration, CacheItemRemoveCallBack)
Utilizar la variableLblvalor.text=cache(“mivariable”)Lblvalor.text=cache[“mivariable”];
Programación ASP.NET
124
Cuando se queda sin memoria se eliminan de forma automática los objetos más viejos
AbsoluteExpiration, propiedad datetieme en la que expira el objeto de la caché
Cache.insert(“mivariable”,valor,Nothing,Datetime.Now.AddMinutes(5),nothing) SlidingExpiration, propiedad timeSpan tiempo que expira en función
del último accesoCache.Insert(“miVariable”,valor,null,null,TimeSpan.FromSeconds(20)); Dependencies, identifica de que objeto depende. Cuande se elimine o
expire ese objeto se eliminan todas sus dependenciasCache.Insert(“miVariable”,valor,new CacheDependency(“mydoc.xml”) CachéItemPriority, los que tengan más prioridad son los últimos en
eliminarse en caso de que tenga poca memoriaCache.Insert(“miVariable”,valor,null,null,CacheItemPriority.High, onremove);
Programación ASP.NET
125
Mejorar rendimiento cacheando una página o partes de una página
Tipos de Output Cache Página, almacena todo un web form Parcial, almacenar controles estáticos de una página
como controles de usuarioEn el fichero .ascx
<%@ OutputCache Duration =“120” %> Web Services, almacena el resultado del web service sin
volver a llamarlo<WebMethod(cacheDuratio:=300)>…[WebMethod(cacheDuratio:=300)]…
Programación ASP.NET
126
Compilación Dinámica Precompilación
Copiar los archivos al servidor web No Necesarios
Archivos de solución (.vbproj…) Archivos de recursos .resx, ya están compilados en las dll Páginas de código .vb, ya están compilados
Necesarios \bin y su contenido Web Form, Controles de Usuario y Servicios Web(.aspx,.asmx.ascx) Ficheros de configuración Archivos complementarios (imágenes, xml…)
Identificar en el IIS el proyecto como aplicación Permisos para Network Service No es necesario registrar el contenido de /bin Poner el sitio fuera de linea con APP_OFFLINE.HTM
Programación ASP.NET
127
IntroducciónAutenticación - Autorización
Seguridad integrada IISSeguridad Forms
Programación ASP.NET
128
Establecer diferentes sistemas para asegurar las aplicaciones web
Sistema complementario a la seguridad de la base de datos IIS permite establecer distintos niveles de seguridad de
forma automática Establecer la comunicación con SSL para asegurar la
transmisión de los datos
Programación ASP.NET
129
Autentificación Autentificarse, identificarse en el sistema Validarse contra el sistema
Autorización Proceso posterior a la autenticación Verificar el nivel de acceso a un recurso en
concreto
Programación ASP.NET
130
Basada en Windows Utiliza la seguridad de IIS Util para intranets ya que utiliza la estructura de windows No es muy útil para la mayoría de aplicaciones web
Basada en Formularios Codificar manualmente la validación Si es correcta el sistema envía un cookie al usuario Útil para cualquier aplicación Soporta todo tipo de clientes Problemático por usar cookies
Microsoft Passport Servicio Web de Microsoft Una sola validación para multiples aplicaciones Tiene coste Utiliza cookies
Programación ASP.NET
131
Niveles Autentificacion IIS Anónimo, no hay autentificación Básica
Se envía usuario y contraseña en modo texto Se puede encriptar con SSL
Texto Se envía la información codificada Requiere Directorio Activo
Integrada Utiliza Kerberos Bueno para intrantet, malo para internet Problemas con cortafuegos
Programación ASP.NET
132
Configurar la seguridad en el IIS Desde la consola de administración escoger el nivel de
seguridad Básica Texto Integrada
Establecer la autentificación en Web.Config<system.web>
<authentication mode=“windows” />
</system.web>
Programación ASP.NET
133
Establecer la autorización en Web.Config Establecer una sección <Location> que indique que páginas son las
que hay que autorizar Se pueden establecer varias secciones <Location> Se puede indicar una carpeta o una página
<location path=“consulta.aspx”><system.web>
<authorization><deny user=“?” />
</authorization></system.web>
</location path> Deny user, niega el acceso a un usuario en concreto
?, a acceso anónimo * todos los accesos
Allow User, permite a un usuario en concreto
Programación ASP.NET
134
Ejecutar el código con usuario predeterminado usando la clave <identity>
<identity impersonate=“true”username=“usuario”password=“contraseña” />
IIS pide la información de registro al usuario Cuando se accede a una página con seguridad se muestra
automáticamente la ventana de validación del usuario y contraseña.
Si es correcta la validación se reenvía automáticamente a la página solicitada
Programación ASP.NET
135
Después de autentificarse se puede acceder a la información con el objeto User.Identity
User.Identity.Name User.Identity.AuthenticationType User.Identity.IsAuthenticated
Lblnombre.text=User.Identity.NamelblTipo.text=User.Identity.AuthenticationTypelblEsAutorizado= User.Identity.IsAuthenticated
Programación ASP.NET
136
EL usuario pide una página IIS pasa la petición a ASP.NET ya que accede en modo
anónimo ASP.NET valida si existe un cookie de seguridad Si no hay cookie, reenvia la petición a la página definida
para validar las credenciales Mediante código chequea las credenciales y si la cumple
genera el cookie Sino es correcta genera un mensaje de acceso denegado
Programación ASP.NET
137
Configurar IIS para acceso anónimo Establecer la autentificación en el web.config
Indicar el formulario que va a validar a los usuarios .name
<system.web><authentication mode=“Forms”>
<forms name=“.namesuffix” loginUrl=“login.aspx” /></authentication>
</system.web> Establecer la autorización
Modificar el fichero web.config igual que en el caso de autorización de windows
Programación ASP.NET
138
Crear un formulario de Logon Permite Introducir usuario y contraseña Utilizar el objeto FormsAuthentication En el botón de validación utilizar el método
RedirectFromLoginPage que reenvía a los usuarios a la url solicitada
Una vez validado podemos acceder a la información con el objeto User.Identity
Programación ASP.NET
139