public void Handle(HttpStatusCode statusCode, NancyContext context) { var error = context.GetException(); var resp = new ErrorResponse { Context = context, ShowDetails = Debugger.IsAttached }; switch (statusCode) { case HttpStatusCode.Unauthorized: context.Response = new RedirectResponse(RouteNames.GetLogin); break; case HttpStatusCode.Forbidden: resp.Title = "Permissions"; resp.Summary = "Sorry, you do not have permission to perform that action."; break; case HttpStatusCode.NotFound: resp.Title = "404 Not Found"; resp.Summary = "Sorry, the requested resource was not found."; break; case HttpStatusCode.InternalServerError: resp.Title = "Sorry, something went wrong"; resp.Summary = "An unexpected error occured."; resp.Details = error.Message; break; } context.Response.StatusCode = statusCode; context.Response = _renderer.RenderView(context, "Modules/Application/Views/Error.cshtml", resp); }
public void Handle(HttpStatusCode statusCode, NancyContext context) { context.NegotiationContext = new NegotiationContext(); var negotiator = new Negotiator(context); var exception = context.GetException(); if (exception.InnerException is DomainException) { var domainException = exception.InnerException; negotiator = negotiator .WithStatusCode(HttpStatusCode.BadRequest) .WithModel(new { errorName = domainException.GetType().Name, error = domainException.Message }); } else { negotiator = negotiator .WithStatusCode(HttpStatusCode.InternalServerError) .WithModel(new { errorName = "InternalServerError", error = "InternalServerError" }); } context.Response = _responseNegotiator.NegotiateResponse(negotiator, context); }
public void Handle(HttpStatusCode statusCode, NancyContext context) { var exception = context.GetException(); if (exception == null) { return; } Log.Error("Server Error", exception); if (exception.InnerException != null) { exception = exception.InnerException; } object exceptionModel; if (exception is OverseerException oEx) { exceptionModel = new { error = oEx.Message, oEx.Properties }; } else { exceptionModel = new { error = exception.Message }; } var serializer = new DefaultJsonSerializer(context.Environment); context.Response = new JsonResponse(exceptionModel, serializer, context.Environment) { StatusCode = HttpStatusCode.BadRequest }; }
/// <summary> /// Handle the status code. /// </summary> /// <param name="statusCode">The status code to handle</param> /// <param name="context">The current context</param> public void Handle(HttpStatusCode statusCode, NancyContext context) { if (context.Response?.Contents != null && !ReferenceEquals(context.Response.Contents, Response.NoBody)) { return; } if (!_checks.ContainsKey((int)statusCode)) { return; } Exception ex; dynamic result = new ExpandoObject(); if (context.TryGetException(out ex)) { result.Type = context.GetException().GetType(); result.Message = _checks[(int)statusCode]; result.StackTrace = context.GetExceptionDetails(); result.Target = $"{context.GetException().TargetSite.Module}.{context.GetException().TargetSite.Name}"; } else { result.Type = statusCode; result.Message = _checks[(int)statusCode]; result.StackTrace = ""; result.Target = ""; } try { context.Response = _responseNegotiator.NegotiateResponse(result, context); context.Response.StatusCode = statusCode; return; } catch (Exception) { // Move on to HTML view } // Wrap the exception in an HTML <pre> tag result.StackTrace = string.Concat("<pre>", context.GetExceptionDetails().Replace("<", ">").Replace(">", "<"), "</pre>"); result.StatusCode = statusCode; var response = _viewRenderer.RenderView(context, "views/errors/" + (int)statusCode + ".html", result); response.StatusCode = statusCode; context.Response = response; }
public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context) { if (statusCode != HttpStatusCode.InternalServerError) { return(false); } var exception = context.GetException(); return(exception != null); }
public void Handle(HttpStatusCode statusCode, NancyContext context) { var exception = context.GetException(); JsonResponse response = new JsonResponse(string.Format("{0}:{1}", exception, exception.Message), new DefaultJsonSerializer()); response.StatusCode = HttpStatusCode.InternalServerError; context.Response = response; context.Response.WithHeader("Access-Control-Allow-Origin", "*") .WithHeader("Access-Control-Allow-Methods", "POST,GET") .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"); }
public void Handle(HttpStatusCode statusCode, NancyContext context) { var e = context.GetException(); LoggingErrorHandler.LogService.Log($"Nancy server error.", e); var response = RenderView(context, "Views/Error.cshtml", e); response.StatusCode = HttpStatusCode.InternalServerError; context.Response = response; }
public void Handle(HttpStatusCode statusCode, NancyContext context) { var exception = context.GetException(); var response = new JsonResponse(new { error = exception.InnerException.Message }, new DefaultJsonSerializer(context.Environment), context.Environment); response.StatusCode = HttpStatusCode.InternalServerError; context.Response = response; context.Response.WithHeader("Access-Control-Allow-Origin", "*") .WithHeader("Access-Control-Allow-Methods", "POST,GET") .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type"); }
public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context) { var exception = context.GetException(); return(exception != null); }
public void Handle(HttpStatusCode statusCode, NancyContext context) { throw new Exception("ConfigurableBootstrapper Exception", context.GetException()); }