private void SendErrorPage(Exception exception) { var httpException = exception as HttpException; var response = HttpContext.Current.Response; response.Status = httpException != null ? httpException.Code : HttpStatusCode.InternalServerError; response.Reason = exception.Message; response.Body.SetLength(0); var args = new ErrorPageEventArgs(HttpContext.Current) { Exception = exception }; ErrorPageRequested(this, args); try { var generator = new ResponseWriter(); if (args.IsHandled) { generator.Send(HttpContext.Current, response); } else { generator.SendErrorPage(HttpContext.Current, response, exception); } } catch (Exception err) { _logger.Error("Failed to display error page", err); } }
/// <summary> /// An error have occurred and we need to send a result pack to the client /// </summary> /// <param name="context">The context.</param> /// <param name="exception">The exception.</param> /// <remarks> /// Invoke base class (<see cref="Server"/>) to send the contents /// of <see cref="IHttpContext.Response"/>. /// </remarks> protected virtual void DisplayErrorPage(IHttpContext context, Exception exception) { var httpException = exception as HttpException; if (httpException != null) { context.Response.Reason = httpException.Code.ToString(); context.Response.Status = httpException.Code; } else { context.Response.Reason = "Internal Server Error"; context.Response.Status = HttpStatusCode.InternalServerError; } var args = new ErrorPageEventArgs(context) { Exception = exception }; ErrorPageRequested(this, args); var writer = HttpFactory.Current.Get <ResponseWriter>(); if (args.IsHandled) { writer.Send(context, context.Response); } else { writer.SendErrorPage(context, context.Response, exception); args.IsHandled = true; } }
private void ErrorPage(IRequest request, IResponse response, HttpException exception) { response.Status = exception.Code; response.Reason = exception.Message; response.Body.SetLength(0); var args = new ErrorPageEventArgs(HttpContext.Current, request, response); args.Exception = exception; ErrorPageRequested(this, args); // Add default error body. if (!args.IsHandled) { string htmlTemplate = "<html><head><title>{1}</title></head><body>Error {0}: {1}</body></html>"; byte[] body = Encoding.UTF8.GetBytes(string.Format(htmlTemplate, (int)response.Status, response.Reason)); response.Body.Write(body, 0, body.Length); } try { var generator = new ResponseWriter(); generator.Send(HttpContext.Current, response); } catch (Exception err) { #if DEBUG if (ExceptionThrown.GetInvocationList().Length == 1) { throw; } #endif ExceptionThrown(this, new ExceptionEventArgs(err)); } }
private void SendErrorPage(RequestEventArgs e, Exception err) { var args = new ErrorPageEventArgs(e.Context, e.Request, e.Response) { Exception = err }; ErrorPageRequested(this, args); e.IsHandled = true; // use a ugly default error page. if (!args.IsHandled) { #if DEBUG byte[] body = Encoding.UTF8.GetBytes(err != null ? err.ToString() : e.Response.Reason); #else byte[] body = Encoding.UTF8.GetBytes(e.Response.Reason); #endif e.Response.Body.Write(body, 0, body.Length); } SendResponse(e.Context, args.Request, args.Response); }
static void myServer_ErrorPageRequested(object sender, ErrorPageEventArgs e) { Database.AddLog(e.Exception.Message, "web", "error"); e.Response.Reason = "Error - YAMS"; e.Response.Connection.Type = ConnectionType.Close; byte[] buffer = Encoding.UTF8.GetBytes("<h1>500 Internal Server Error</h1><p>" + e.Exception.Message + "</p><p>" + e.Exception.Source + "</p><p>" + e.Exception.StackTrace + "</p><p>" + e.Exception.InnerException.StackTrace + "</p>"); e.Response.Body.Write(buffer, 0, buffer.Length); }
private void Listener_OnErrorPage(object sender, ErrorPageEventArgs e) { _server = this; DisplayErrorPage(e.Context, e.Exception); e.IsHandled = true; }
private void ErrorPage(IRequest request, IResponse response, HttpException exception) { response.Status = exception.Code; response.Reason = exception.Message; response.Body.SetLength(0); var args = new ErrorPageEventArgs(HttpContext.Current, request, response); args.Exception = exception; ErrorPageRequested(this, args); // Add default error body. if (!args.IsHandled) { string htmlTemplate = "<html><head><title>{1}</title></head><body>Error {0}: {1}</body></html>"; byte[] body = Encoding.UTF8.GetBytes(string.Format(htmlTemplate, (int) response.Status, response.Reason)); response.Body.Write(body, 0, body.Length); } try { var generator = new ResponseWriter(); generator.Send(HttpContext.Current, response); } catch (Exception err) { #if DEBUG if (ExceptionThrown.GetInvocationList().Length == 1) throw; #endif ExceptionThrown(this, new ExceptionEventArgs(err)); } }
/// <summary> /// An error have occurred and we need to send a result pack to the client /// </summary> /// <param name="context">The context.</param> /// <param name="exception">The exception.</param> /// <remarks> /// Invoke base class (<see cref="Server"/>) to send the contents /// of <see cref="IHttpContext.Response"/>. /// </remarks> protected virtual void DisplayErrorPage(IHttpContext context, Exception exception) { var httpException = exception as HttpException; if (httpException != null) { context.Response.Reason = httpException.Code.ToString(); context.Response.Status = httpException.Code; } else { context.Response.Reason = "Internal Server Error"; context.Response.Status = HttpStatusCode.InternalServerError; } var args = new ErrorPageEventArgs(context) {Exception = exception}; ErrorPageRequested(this, args); var writer = HttpFactory.Current.Get<ResponseWriter>(); if (args.IsHandled) writer.Send(context, context.Response); else { writer.SendErrorPage(context, context.Response, exception); args.IsHandled = true; } }
private void OnErrorPage(object sender, ErrorPageEventArgs e) { _server = this; ErrorPageRequested(this, e); }
private void SendErrorPage(RequestEventArgs e, Exception err) { var args = new ErrorPageEventArgs(e.Context, e.Request, e.Response) {Exception = err}; ErrorPageRequested(this, args); e.IsHandled = true; // use a ugly default error page. if (!args.IsHandled) { #if DEBUG byte[] body = Encoding.UTF8.GetBytes(err != null ? err.ToString() : e.Response.Reason); #else byte[] body = Encoding.UTF8.GetBytes(e.Response.Reason); #endif e.Response.Body.Write(body, 0, body.Length); } SendResponse(e.Context, args.Request, args.Response); }
private void SendErrorPage(Exception exception) { var httpException = exception as HttpException; var response = HttpContext.Current.Response; response.Status = httpException != null ? httpException.Code : HttpStatusCode.InternalServerError; response.Reason = exception.Message; if (response.Body.CanWrite) response.Body.SetLength(0); var args = new ErrorPageEventArgs(HttpContext.Current) {Exception = exception}; ErrorPageRequested(this, args); try { var generator = new ResponseWriter(); if (args.IsHandled) generator.Send(HttpContext.Current, response); else generator.SendErrorPage(HttpContext.Current, response, exception); } catch (Exception err) { _logger.Error("Failed to display error page", err); } }