namespace LaaProductionWeb.API { using Newtonsoft.Json; using System.Net; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Web.Http; using System.Web.Http.Results; public class ControllerBase : ApiController { protected override BadRequestResult BadRequest() { return new BadRequestModelResult(this); } } public class BadRequestModelResult : BadRequestResult { private readonly ApiController controller; public BadRequestModelResult(ApiController controller) : base(controller) { this.controller = controller; } public override Task ExecuteAsync(CancellationToken cancellationToken) { var errors = this.controller.ModelState.Errors(); var errorsJson = JsonConvert.SerializeObject(errors); var httpResponseMessage = new HttpResponseMessage(); httpResponseMessage.Content = new StringContent(errorsJson, Encoding.UTF8, "application/json"); httpResponseMessage.ReasonPhrase = nameof(HttpStatusCode.BadRequest); httpResponseMessage.RequestMessage = controller.Request; httpResponseMessage.StatusCode = HttpStatusCode.BadRequest; return Task.FromResult(httpResponseMessage); } } }