Eventos nuevos en el ciclo de vida de una pagina en ASP.NET 2.0

En ASP.NET 1.x existen en el ciclo de vida de una página los eventos Init, Load, Prerender y Unload que se disparaban en este orden y podiamos escribir código asociado a dichos eventos para poder modificar la salida de la página y el estado de los controles que la constituían.


La nueva versión de ASP.NET añade nuevos eventos para seguir el procesamiento de las peticiones de forma más precisa. Estos nuevos eventos son:


PreInit  Ocurre antes de que la página empiece a inicializarse y es el primer evento en el ciclo de vida de una página ASP.NET 2.0


Initcomplete Tiene lugar cuando se completa la inicialización de una página


PreLoad  Ocurre después de la inicialización y antes de que la página empiece a cargar la información del estado.


LoadComplete Ocurre despues de cargarse la página


PreRenderComplete Tiene lugar cuando la fase de Prerender esta acabada y todos los controles han sido creados. Despues de este evento el ViewState es guardado y se genera el HTML de la página.

Modelo de Codigo subyacente en VS2003 y el de separacion de codigo en VS2005

ASP.NET 1.x soporta compilación dinamica de los ficheros (.aspx), (.asmx),  (.ascx),  (.ashx), y global.asax. Estos tipos de ficheros son compilados automáticamente bajo demanda cuando se solicitan por primera vez en una aplicación web. La copia compilada es invalidada tan pronto como se detecta un cambio en el código fuente mientras que en ASP.NET 2.0 la característica de compilación bajo demanda se extiende a otros tipos de ficheros como los (.vb and .cs),  (.resx), (.wsdl),  (.xsd).  Despues de cambiar estos ficheros no es necesario forzar una compilación en VS.


Mediante la siguiente tabla trato de reflejar las principales diferencias entre el famoso Code -Behind (usa el atributo Codebehind) de las paginas ASP.NET 1.x y el Code-Separation de las paginas ASP.NET 2.0 en  las dos versiones de Visual Studio que mas se usan hoy en día. El nuevo modelo de código se implementa usando clases parciales usando el atributo CodeFile.























Modelo Code-Behind en Visual Studio .NET 2003.  Modelo clases parciales en Visual Studio 2005.

Necesita un directorio virtual IIS.


Puede acceder directamente a la instalación local de  IIS.


Carece de soporte FTP, acceso al sistema de archivos e IIS.


Tiene varias formas de abrir sitios web.


Necesita IIS en el pc de desarrollo.


Tiene su propio servidor web Cassini.


No permite abrir páginas individuales fuera de un proyecto.


No necesita abrir el proyecto entero; las páginas idividuales puede ser abiertas sin ser compiladas.


Necesita añadir explícitamente los ficheros al proyecto,


Elimina la necesidad de añadir explícitamente ficheros al proyecto.


 


Saludos


Sergio

¿Como leo certificados digitales de cliente en ASP.NET?

Hay veces que en vez de instalar un certificado digital SSL en el servidor web IIS, tal y como expliqué en el número 19 de Dotnetmania hace algún tiempo (próximamente estará disponible para su descarga gratuita en PDF), tenemos que leer un certificado digital de cliente que se instala en Internet Explorer para asegurarnos la identidad del visitante leyendo su nombre y DNI. Estos certificados los puede expedir una Entidad emisora de certificados como puede ser la Fábrica nacional de Moneda FNMT. Si lo que quieres es obtener la firma digital como ciudaddno puedes hacerlo en esta url http://www.cert.fnmt.es/index.php?cha=cit&sec=obtain_cert donde están todas las intrucciones detalladas. Ya sabéis que estos certificados se renuevan periódicamente como los SSL de servidor (puede no ser válido si ha caducado) y se pueden exportar en formato pfx de un pc a otro e incluso ponerle una clave o PIN.


 Aqui os copio un código sencillo en ASP.NET que os lee las características del certificado del cliente  en una petición http a través del famoso objeto Request que os puede ser de utilidad a más de uno:


Dim cert As HttpClientCertificate = Request.ClientCertificate


If cert.IsPresent Then


‘Get the Organization (O) field from the Subject section.


‘ certData.Text = cert.Get(«Subject O»)


Response.Write(«ServerSubject = » & cert.ServerSubject & «<br>»)


Response.Write(«Subject = » & cert.Subject & «<br>»)


Response.Write(«issuer = » & cert.Issuer & «<br>»)


Response.Write(«Valido desde = » & cert.ValidFrom & «<br>»)


Response.Write(«valido hasta = » & cert.ValidUntil & «<br>»)


Response.Write(«valido ? = » & cert.IsValid & «<br>»)


Response.Write(«tamaño de la clave secreta = » & cert.SecretKeySize & «<br>»)


Response.Write(«Server issuer = » & cert.ServerIssuer & «<br>»)


Response.Write(«Serial number hasta = » & cert.SerialNumber & «<br>»)


Response.Write(«Codificacion = » & cert.CertEncoding & «<br>»)


ElseIf Not cert.IsValid Then


Response.Write(«el certificado no es valido»)


 


Else


Response.Write(«No se ha encontrado certificado»)


 


End If


Dim desc As New X509Certificate(cert.Certificate)


Dim resultsTrue As String = desc.ToString(True)


Response.Write(«<br>despues de sacar flujo de bytes : » & resultsTrue)


Response.Write(«<br>Hash string : » & desc.GetCertHashString)


Response.Write(«<br>Algoritmo (parametros): » & desc.GetKeyAlgorithmParametersString)


Response.Write(«<br>Clave publica: » & desc.GetPublicKeyString)


Saludos


Sergio Vázquez

Proximo evento GUSENET 23 Febrero Murcia

Viernes 23 de febrero: “dotNet day”


– 16:00 / 16:30: Bienvenida y registro
– 16:30 / 17:30: La platorma .Net, overview y evolución hasta 3.0. Sergio Vázquez
– 17:30 / 18:15: Descanso
– 18:15 / 19:00: Windows Presentation Fundation (WPF): Diseñas o Desarrollas ? Óscar Montesinos
– 19:00 / 19:30: Organización de LABs en próximos eventos, ofertas de empleo, y otros


Lugar:   Universidad de Murcia


            Campus de Espinardo


Aula A.04 bis


            Aulario Norte


Plano del lugar: (es en el edificio nº 6 del plano)


http://www.um.es/universidad/planos/plano-espinardo/espinardo.php


 Saludos