예제 #1
0
        protected ActionResult ValidationErrors(Result failure)
        {
            var newModelState = new ModelStateDictionary();

            switch (failure.ErrorType)
            {
            case ErrorType.ObjectValidationFailed:
                newModelState.AddValidationErrors(failure.ObjectValidationErrors);
                break;

            case ErrorType.ObjectDoesNotExist:
                return(ApiNotFoundErrorMessage(Messages.NotFound));

            case ErrorType.ConcurrencyConflict:
                newModelState.AddValidationErrors(failure.ObjectValidationErrors);
                break;

            default:
                //perhaps should be throwing so Startup returns a 500
                //throw ex;
                newModelState.AddModelError("", Messages.UnknownError);
                break;
            }
            return(ValidationErrors(newModelState));
        }
예제 #2
0
        protected ActionResult ValidationProblem(Result failure)
        {
            var newModelState = new ModelStateDictionary();

            switch (failure.ErrorType)
            {
            case ErrorType.ValidationFailed:
                newModelState.AddValidationErrors(failure.Errors);
                break;

            case ErrorType.NotFound:
                return(NotFound());

            case ErrorType.ConcurrencyConflict:
                newModelState.AddValidationErrors(failure.Errors);
                break;

            default:
                throw new Exception(Messages.UnknownError);
            }

            return(ValidationProblem(newModelState));
        }
예제 #3
0
        public override void Handle(ExceptionHandlerContext context)
        {
            if (context.Exception is ValidationFailedException)
            {
                var ex = context.Exception as ValidationFailedException;
                if (context.ExceptionContext.ActionContext != null)
                {
                    ModelStateDictionary modelState = context.ExceptionContext.ActionContext.ModelState;
                    modelState.AddValidationErrors(ex.ValidationErrors);

                    context.Result = new CustomHttpResult(
                        context.Request,
                        HttpStatusCode.BadRequest,
                        BadRequestResponse.Create(modelState));
                }
                else
                {
                    context.Result = new CustomHttpResult(
                        context.Request,
                        HttpStatusCode.BadRequest,
                        BadRequestResponse.Create(ex.ValidationErrors));
                }
            }
            else if (context.Exception is EntityNotFoundException)
            {
                context.Result = new CustomHttpResult(
                    context.Request,
                    HttpStatusCode.NotFound,
                    BaseApiResponse.NotFound(context.Request.RequestUri));
            }
            else if (context.Exception is ResourceForbiddenException)
            {
                context.Result = new CustomHttpResult(
                    context.Request,
                    HttpStatusCode.Forbidden,
                    BaseApiResponse.Forbidden());
            }
            else
            {
                context.Result = new CustomHttpResult(
                    context.Request,
                    context.Exception is SecurityException ? HttpStatusCode.Unauthorized : HttpStatusCode.InternalServerError,
                    BaseApiResponse.InternalServerError(context.Exception.Message));
            }
        }