using System; using System.Text; using System.Web; using Scrummer.Code.Pages; namespace Scrummer.Code { public static class GlobalErrorHandler { #region Private methods private static void ShowInternalError(HttpContext context, Exception ex) { context.Response.StatusCode = 500; context.Response.Clear(); StringBuilder sbOutput = new StringBuilder(); sbOutput.Append("
Message: {0}
", exAux.Message); sbOutput.AppendFormat("StackTrace:
{0}", exAux.StackTrace);
exAux = exAux.InnerException;
}
// Fill response to 512 bytes to avoid browser "beauty" response of errors.
long fillResponse = 512 - sbOutput.Length;
if (fillResponse > 0)
{
sbOutput.Append("");
}
context.Response.Write(sbOutput.ToString());
}
#endregion
#region Public methods
public static void HandleError(HttpContext context, Exception ex)
{
try
{
IHttpHandler frmError = new FrmError(ex);
context.Response.Clear();
context.Handler = frmError;
frmError.ProcessRequest(context);
}
catch
{
ShowInternalError(context, ex);
}
}
#endregion
}
}