42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
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<HttpResponseMessage> 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);
|
|
}
|
|
}
|
|
} |