Beispiel #1
0
        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("<", "&gt;").Replace(">", "&lt;"), "</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");
    }
Beispiel #7
0
        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());
 }
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     throw new Exception("ConfigurableBootstrapper Exception", context.GetException());
 }