lunes, febrero 26, 2007

Capturar errores en ASP.NET

Generalmente, la alternativa para capturar errores y mostrarlos mas amigables es la de escribirlo en el Global.asax.

Acá encontraron otra manera: utilizan un HttpModule que captura el error y redirecciona a una página. Interesante para probarlo


using System;
using System.Web;
using System.Web.Configuration;

namespace Superexpert
{
///
/// Handles all unhanlded exceptions in an application
///
public class FriendlyErrorsModule : IHttpModule
{
public void Init(HttpApplication app)
{
app.Error += new EventHandler(app_Error);
}

///
/// When debug mode is enabled, display
/// friendly error page
///

void app_Error(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
Exception error = context.Server.GetLastError().GetBaseException();
context.Response.Clear();

CompilationSection compilationConfig = (CompilationSection)
WebConfigurationManager.GetWebApplicationSection("system.web/compilation");

if (compilationConfig.Debug)
context.Server.Transfer("~/FriendlyErrors/Debug.aspx");
else
context.Server.Transfer("~/FriendlyErrors/Public.aspx");
}

public void Dispose()
{
}

}

}
Obviamente, falta codificar las páginas, pero lo que importa es la idea
También crearon un template para VisualStudio que muestra como crear estas páginas nuevas, con un par de clases auxiliares.
Mandé este template a la cuenta de mail del sitio bajo el título "Template Error ASP.NET"


Etiquetas: ,

0 Comentarios:

Publicar un comentario

Suscribirse a Comentarios de la entrada [Atom]

<< Página Principal