Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2009-05-07-TutorialASP.NET
2009-05-07-TutorialASP.NET
ASP.NET
Integracin de Sistemas
Parte II. Diseo e implementacin de
aplicaciones Web con .NET
ndice de Contenidos
Introduccin
Formularios Web
PostBack
Configuracin
S
Seguridad
id d
Gestin Errores
Master Pages
Trazas
Integracin de Sistemas
HTML Forms
HTML Forms
Method = GET
Method = POST
<form method="get">
method= get >
. . .
</form>
<form method="post">
method= post >
. . .
</form>
GET /suma.html?op1=2&op2=2
HTTP/1.1
.
.
.
Connection: Keep-Alive
[blank line]
Integracin de Sistemas
Procesamiento en el Servidor
Son DLL Windows que corren bajo Internet Information Server (IIS)
Escritas en C++
Qu es ASP.NET?
P
Permite
it utilizar
tili
cualquier
l i llenguaje
j .NET
NET
Integracin de Sistemas
Archivos Code-Behind
Global.asax
Contiene los mtodos desde los que el usuario puede gestionar los
diferentes eventos globales de una aplicacin
Directorio BIN
E l
Enlaces
aS
Servicios
i i W
Web
b XML
Integracin de Sistemas
hello.aspx
Navegador
Web
http://.../hello.aspx
2. El parser de
ASP.NET
interpreta el
cdigo fuente
Memoria
Assembly
Cache
Assembly
y IL
Execute
Assembly IL
HTTP Runtime
CLIENTE
1. El navegador
cliente enva una
peticin GET HTTP
al servidor
3. ASP.NET invoca al
compilador
4. El Runtime carga
y ejecuta el
cdigo intermedio
(IL)
SERVIDOR
Navegador
Web
http://.../hello.aspx
Memoria
Assembly
Cache
A
Assembly
bl IL
Assembly IL
Execute
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 Runtime
CLIENTE
SERVIDOR
Integracin de Sistemas
Qu es un Formulario Web?
Controles de servidor
HTML
WebControls
Ci l d
Ciclo
de vida
id d
de un W
Web
b Form
F
Integracin de Sistemas
Web Form
Se compone de:
Cdigo asociado,
asociado denominado CodeBehind
Directivas de pgina
p g
T
Trace:
: habilitacin de la traza para la pgina actual
etc.
e.g.
Integracin de Sistemas
Controles:
<input type="text">
<asp:Button runat="server">
Comentarios
Bloques de cdigo
Render code
Integracin de Sistemas
}
}
}
Integracin de Sistemas
e.g. PageName.aspx.cs
e g PageName.aspx.designer.cs
e.g.
PageName aspx designer cs
10
Integracin de Sistemas
HTML
Por defecto,
P
d f t los
l elementos
l
t HTML no
son accesibles desde cdigo del lado
del servidor
HTML runat=server
Ejemplo:
System.Web.UI.HtmlControls
.aspx
.aspx.cs
HtmlButton txtName;
txtName.BackColor = System.Drawing.Color.Grey;
String userName = txtName.Value;
11
Integracin de Sistemas
WebControls
Sl accesibles
Slo
ibl d
dell llado
d d
dell servidor
id
System.Web.UI.WebControls
Ejemplo
<asp:TextBox ID="txtUserName"
runat="server" Text="Your name"/>
/
Tipos de WebControls
Botn HTML
<input type="button"
type= button value=
value="Search"/>
Search />
12
Integracin de Sistemas
HTML equivalente
<asp:button>
<input type="submit">
<asp:checkbox>
<input type="checkbox">
<asp:hyperlink>
<asp:image>
<img src="">
<asp:imagebutton>
<input type="image">
<asp:label>
<span> </span>
<asp:panel>
<div> </div>
<asp:radiobutton>
<input type="radio">
<asp:table>
<table> </table>
<asp:textbox>
<input type="text">
<asp:listbox>
13
Integracin de Sistemas
Cliente
Servidor
RequiredFieldValidator. Campo
obligatorio
bli t i
RegularExpressionValidator. Valida
contra un patrn o expresin regular
CustomValidator. Se dispara un
evento
t (Cliente
(Cli t o S
Servidor)
id ) d
donde
d se
controla la validacin
ValidationSummary. No es un
validador en s mismo. Muestra los
mensajes de error generados por
otros controles de forma agrupada
14
Integracin de Sistemas
Propiedades importantes
ControlToValidate
Text
ErrorMessage
Display
Ejemplos:
15
Integracin de Sistemas
CLIENTE WEB
SERVIDOR
Mensaje
Evento
1. Analizar mensaje
2. Llamar al manejador
apropiado
Respuesta
ejemplo.aspx
Manejador
e g Default.aspx
e.g.
Default aspx
<asp:Button ID="btnExample" runat="server" Text="Aceptar"
OnClick="btnExampleClick" />
e.g. Default.aspx.cs
protected void btnExampleClick(object sender, EventArgs e)
{
this.btnExample.Text = "Pulsado";
}
16
Integracin de Sistemas
PostBack
PostBack
17
Integracin de Sistemas
PostBack
Propiedades relacionadas:
control.PostBackUrl
Page.PreviousPage
PreviousPage.IsCrossPagePostBack
Equivalente a IsPostBack
PostBack
<! InitialPage.aspx -->
<html>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="Input" runat="server" />
<asp:Button ID="Button" Text="Test" runat="server"
PostBackUrl="TargetPostBack.aspx" />
</form>
</body>
</html>
18
Integracin de Sistemas
Configuracin
Niveles configurables
servidor root,
servidor,
root subdirectorios web
Ficheros
Machine.config
Web.config
Machine.config
Web.config
Root
Dir
Sub
Dir1
Sub
Dir2
Configuracin
Machine.config
Ubicacin
C:\WINDOWS\Microsoft.NET\Framework\vn.n.nnnnn\CONFIG\machine.config
19
Integracin de Sistemas
Configuracin
Web.config
<authentication>
<authorization>
<customErrors>
<globalization>
<httpRuntime>
<sessionState>
<trace>
Configuracin
Web.config
ConfigurationSettings.GetSection(SECTION
g
g
(
_NAME)
)
Puede haber mltiples Web.config por aplicacin Web, pero slo uno por
directorio
Monitorizacin
Actualizacin peridica
20
Integracin de Sistemas
Configuracin
Web.config
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<Es.UDC.DotNet.MiniPortal.Properties.Settings>
<setting name="UserProfileDAOFactory_providerInvariantName"
<value>System.Data.SqlClient</value>
</setting>
<Es.UDC.DotNet.MiniPortal.Properties.Settings>
<system.web>
<trace enabled="true" localOnly="true" pageOutput="true" />
<compilation debug=
debug="true"
true />
<httpRuntime appRequestQueueLimit="100" executionTimeout="600" />
<sessionState mode="InProc" cookieless="false" timeout="20" />
<customErrors mode="RemoteOnly" defaultRedirect="/errors/error.html">
<error statusCode="404" redirect="/errors/pagenotfound.html" />
</customErrors>
</system.web>
</configuration>
Configuracin
Global.asax
Aplicacin
Sesin
Peticin
21
Integracin de Sistemas
Configuracin
Global.asax: orden eventos
Primera Peticin
Application_BeginRequest
Application_Authenticate
Application_EndRequest
Session_Start
Cada Peticin
Application_Start
Session_End
Application_End
Configuracin
Global.asax: uso tpico de eventos
Application_Start
Session_Start
Acciones de personalizacin
Applicattion_Authenticate
Cdigo adicional a la autenticacin: log, comprobacin de roles, etc.
Application_EndRequest
Application_BeginRequest
22
Integracin de Sistemas
Configuracin
Global.asax: uso tpico de eventos
Application_Error
Session_End
Application_End
til para enviar e-mail o escribir al event log cuando un ocurra un error que no
pueda ser gestionado
Parmetros comunes
Object sender
EventArgs e
Configuracin
Global.asax: ejemplo
public 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)
{
}
<< ... >>
}
23
Integracin de Sistemas
Entonces
24
Integracin de Sistemas
Query string
Visibilidad elevada
__VIEWSTATE
Cookies
Li it i
Limitaciones
Caractersticas
EnableViewState="false"
ViewState["variableName"] = variableValue;
25
Integracin de Sistemas
Creacin
HttpCookie cookie =
new HttpCookie("loginName", UserProfile.LoginName);
cookie.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookie);
Lectura
HttpCookie
ttpCoo e coo
cookie
e = Request.Cookies["loginName"];
equest.Coo es[ og
a e ];
Borrado
HttpCookie cookie = Request.Cookies["loginName"];
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
Cookies
Ejemplo
26
Integracin de Sistemas
Propiedades
Domain
Expires
Name
Value
Nombre de la cookie
Contenido de la cookie
Variables de Aplicacin
Compartidas
p
entre todas las sesiones
Variables de Sesin
Almacenamiento persistente
Base de Datos
27
Integracin de Sistemas
Application.Lock
pp cat o . oc antes de actualizar
Qu es una sesin?
Problemas
Estado aplicacin
p
se almacena en una instancia de la clase
HttpSessionState
28
Integracin de Sistemas
ASP.NET_SessionID
Ejemplo: http://server/site/(uqwfp455t2qav155)/default.aspx
Web.Config:
<configuration>
<sessionState cookieless="UseUri" timeout="20"/>
</configuration>
Count
Keys
Identificador de sesin
Timeout
SessionID
IsNewSession
29
Integracin de Sistemas
Hipervnculo
Postback
Response.Redirect
Server.Transfer
Server.Execute
Response.Redirect
Response.Redirect("/MainPage.aspx");
Response.Redirect("http://www.google.com/");
30
Integracin de Sistemas
Server.Transfer
Server.Transfer("/MainPage.aspx");
Mantiene recursos
Request se mantiene
Server.Execute
Flujo
j de informacin
Propiedades
31
Integracin de Sistemas
Autenticacin
Niveles:
IIS
ASP.NET
Autenticacin
Autenticacin Internet Information Server
Annimo
Bsica
Digest
Certificados Digitales
Integrada
32
Integracin de Sistemas
Autenticacin
Autenticacin ASP.NET
Modos de autenticacin
None
No se realiza autenticacin
Windows
Forms
Passport
Autenticacin
Autenticacin ASP.NET
Pgina
g
de autenticacin
Configuracin
Web.config
<system.web>
<authentication mode="Forms">
<Forms loginURL="/loginForm.aspx" name="loginForm"/>
</authentication>
</system.web>
33
Integracin de Sistemas
Autenticacin
Autenticacin ASP.NET
IIS
ASP.NET
No existe cookie
Existe cookie
Usuario
Pgina
protegida
Password
Submit
loginForm.asp
x
Cookie
Autenticacin
Autenticacin ASP.NET
Redireccin automtica
FormsAuthentication.RedirectFromLoginPage(string userName,
bool createPersistentCookie)
Redireccin personalizada
FormsAuthentication.SetAuthCookie
FormsAuthentication.GetAuthCookie
FormsAuthentication.SignOut()
34
Integracin de Sistemas
Autenticacin
Autenticacin ASP.NET
Ejemplo:
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="/Authentication.aspx"
timeout="30"
path="/"
defaultUrl="/MainPage.aspx"
cookieless="UseUri" />
</authentication>
</system.web>
Autorizacin
S configura
Se
fi
en ell web.config
b
fi
Comodines
? Usuarios annimos
35
Integracin de Sistemas
Autorizacin
Pginas de Error
N C
No
Controladas
t l d
etc.
Pgina no encontrada
Error Servidor
Etc.
Pgina de Error
Errores HTML
36
Integracin de Sistemas
Pginas de Errores
Nivel de Pgina
Atributo PageError
Especifica
p
q
que p
pgina
g
se muestra cuando la p
pgina
g
actual origina
g
una
excepcin no capturada
Ejemplo
<%@ Page Language="C#" CodeBehind="Register.aspx.cs"
Inherits="Es.UDC.DotNet.MiniPortal.HTTP.HTML.Register"
PageError="InternalError.aspx" %>
Pginas de Errores
Nivel de Aplicacin
Ejemplo web.config
<
<customErrors
t E
mode="RemoteOnly"
d "R
t O l "
defaultRedirect="InternalError.aspx">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
On
Off
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
37
Integracin de Sistemas
Master Pages
Master Pages
Pgina Maestra (Master Page)
Pgina de Contenido
(Content Page)
38
Integracin de Sistemas
Master pages
Pgina maestra
<%@ Master Language="C#" AutoEventWireup="true" Codebehind="Site1.master.cs"
Inherits="ASPDotNetTutorialMasterPages.Site1" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>ASP.NET Tutorial</title>
<link href="Styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="window">
<!-- Page title. -->
<div id="pageTitle">ASP.NET Tutorial</div>
<!-- Body content. -->
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1"
ID= ContentPlaceHolder1 runat=
runat="server">
server >
</asp:ContentPlaceHolder>
</div>
<!-- Footer. -->
<div id="footer">© Universidad de A Corua - 2007</div>
</div>
</body>
</html>
Master pages
Pgina de contenido
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true"
Codebehind="HelloUserByPost.aspx.cs"
Inherits="ASPDotNetTutorialMasterPages.Hello.HelloUserByPost"
Title="HelloUserByPost" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
<form method="POST" action="HelloUser.aspx">
<div id="form">
User name
<input type="text" name="userName" size="16" maxlength="16" />
<br />
<br />
<input type="submit"
type= submit value=
value="Say
Say me hello"
hello />
</div>
</form>
</asp:Content>
39
Integracin de Sistemas
Master Pages
Site.master
<%@ Master %>
<asp:ContentPlaceHolder
ID="Main"
RunAt="server" />
default.aspx
http://.../default.aspx
</asp:Content>
Master Pages
Contenido por defecto
40
Integracin de Sistemas
Master Pages
Aplicar una pgina maestra a un sitio Web
Archivo Web.config
Web config
<configuration>
<system.web>
<pages masterPageFile="~/MasterPage.master" />
</system.web>
</configuration>
Se asegura que todas las pginas del sitio Web seguirn el diseo de la
pgina maestra, incluso aqullas que carezcan de las directivas @ Page
MasterPageFile
Master Pages
Pgina maestra segn el navegador
Ejemplo:
<%@ Page Language=C# MasterPageFile=~/General.Master
Mozilla:MasterPageFile=~/GeneralMozilla.Master
Opera:MasterPageFile=~/GeneralOpera.Master %>
Navegadores
g
41
Integracin de Sistemas
Trazas
Habilitacin
Nivel de pgina
Nivel de aplicacin
Trazas
Objeto Trace
Tipo: System.Web.TraceContext
Mtodos
Trace.Write:
Trace.Warn:
Mensajes de Error
Propiedades
p
Trace.IsEnabled:
Trace.Mode
Mensajes Informativos
SortByTime
SortByCategory
42
Integracin de Sistemas
Trazas
Habilitacin a nivel de pgina
Directiva Trace
<%@ Page trace="true" localOnly="true"%>
Trazas
Habilitacin a nivel de pgina
Contenido
Pgina
Contenido
Traza
43
Integracin de Sistemas
Trazas
Detalles Solicitud
Headers HTTP
Formularios
Coleccin formularios
Cadenas de Consulta
Estado Aplicacin
Cabeceras
Estado Sesin
Cookies Respuesta
rbol de Control
Informacin Seguimiento
Variables de Aplicacin
Query String
SERVER_NAME ,
LOGON_USER,
Cookies Solicitud
Trazas
Habilitacin a nivel de aplicacin
Consulta de la traza
http://sitename/AppName/trace.axd
44
Integracin de Sistemas
Trazas
Habilitacin a nivel de aplicacin
http://localhost/trace.axd
Detalle
Trazas
Habilitacin a nivel de aplicacin
enabled
requestLimit
pageOutput
traceMode
localOnly
45