Beispiel #1
0
        public static IMvcBuilder UseProblemDetailsInvalidModelStateResponseFactory(this IMvcBuilder builder)
        {
            builder.Services.Configure <ApiBehaviorOptions>(options =>
            {
                options.InvalidModelStateResponseFactory = context =>
                {
                    var problemDetails = new ModelStateValidationProblemDetails(context.ModelState)
                    {
                        Instance = context.HttpContext.Request.Path,
                        Status   = StatusCodes.Status400BadRequest,
                        Type     = $"https://httpstatuses.com/400",
                        Detail   = "Model State Validation"
                    };

                    return(new BadRequestObjectResult(problemDetails)
                    {
                        ContentTypes =
                        {
                            "application/problem+json",
                            "application/problem+xml"
                        }
                    });
                };
            });
            return(builder);
        }
        public override ProblemDetails ProblemDetails()
        {
            var problemDetails = new ModelStateValidationProblemDetails()
            {
                Title    = Title,
                Detail   = Detail,
                Instance = Instance,
                Status   = Status ?? StatusCodes.Status400BadRequest,
                Type     = Type,
                Errors   = _errors.ToList()
            };

            foreach (KeyValuePair <string, object> extension in Extensions)
            {
                problemDetails.Extensions.Add(extension);
            }

            return(problemDetails);
        }