Gestión de errores con ASP.NET AJAX Extensions 

Demasiado a menudo nos encontramos con aplicaciones web que ejecutan código JavaScript que contiene errores. Esto acostumbra a dejar inactiva alguna de las funcionalidades de la página que el usuario está visitando y  provocar, dependiendo de la configuración del explorador,  la aparición de incómodas ventanas de error emergentes. Puede que con esta experiencia el usuario decida no volver a visitar la página o si no tiene más remedio que trabajar con esta, convertir su trabajo en algo realmente desagradable. La posibilidad de que se produzcan errores no controlados aumenta con la complejidad de las aplicaciones web actuales.

¿Existe en la tecnología NET una solución a este problema? Sí. Microsoft nos proporciona su propio framework de JavaScript, junto con un conjunto de controles de servidor, que nos proporciona una gestión de errores completa. Esto es, capturar y procesar los errores que se producen en las llamadas asíncronas –tanto en cliente como en servidor- sin casi tener que escribir una sola línea de código para ello.

Gestión de errores en servidor:

La clase ScriptManager nos proporciona un evento en servidor llamado AsyncPostBackError. Este evento lanza un AsyncPostBackErrorEventArgs cuando se produce un error durante el proceso de un postback asíncrono. La propiedad Exception del argumento expone la excepción que se ha producido durante el postback asíncrono para su proceso adecuado (trazas y otras acciones que podamos necesitar).

Gestión de errores en cliente:

Aquí debemos contemplar los dos escenarios más comunes (1):

Eventos de servidor en controles contenidos en UpdatePanels (postbacks asíncronos).

Llamadas asíncronas a servicios web mediante el framework JavaScript de Microsoft.

 

En el primer caso disponemos del objeto JavaScript PageRequestManager – espacio de nombres Sys.WebForms – que nos pone a disposición el método add_endRequest (handler). Al finalizar la llamada al servidor, la instancia llamará al manejador que previamente le hemos facilitado pasándole un argumento del tipo EndRequestEventArgs, que nos proporciona los métodos get_error () y set_errorHandled (valor Booleano). Si se ha producido un error durante el proceso de llamada al servidor el primer método nos proporciona la excepción correspondiente y la segunda, con el valor true, le indica a la instancia de PageRequestManager que el error ya ha sido controlado y no debe seguir propagándolo.

En el segundo caso podemos tener llamadas a servicios web desde cliente tal como sigue:

EspacioDeNombres.ServicioWeb.NombreMétodoWeb ([parámetro], [parámetro],…, OnSuceededHandler, OnfailedHandler)

Donde el manejador Onfailed deberá gestionar cualquier error que suceda durante la llamada asíncrona al servidor.

Este artículo no ha profundizado mucho en la gestión de errores de ASP.NET AJAX Extensions, simplemente pretende ser una introducción para que el lector interesado tenga una referencia que le sirva de guía para profundizar por sí mismo. Espero que haya sido de ayuda.

 

(1). Existen otros casos pero su resolución es parecida a la descrita aquí.

 

David Gutiérrez Coma.

 
Si lo desea puede escribir un correo indicando el artículo y el autor al que va dirigido y realizar cuantas preguntas, sugerencias o comentarios desee. Le remitiremos contestación lo antes posible. ¡Muchas gracias!
Posted on 6-Mar-09 by Edin Kapic

Tags:
 

vínculos