Я не могу переопределить ошибку http 404, но она работает для любых других кодов http, таких как 400:
Если удалить строку и сохранить404 http code
response = request.CreateResponse(HttpStatusCode.BadRequest);
Я получаю это стандартное сообщение:
, а не мое специальное сообщение об ошибке, как для 400
Мой обработчик сообщений:
public class CustomMessageHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var response = await base.SendAsync(request, cancellationToken);
if (response != null && response.StatusCode == HttpStatusCode.NotFound)
{
response = request.CreateResponse(HttpStatusCode.BadRequest);
response.Content =
new ObjectContent(
typeof(Error),
new Error { error = "bad_request", description = "Your request is not valid", url = request.RequestUri.AbsolutePath },
new JsonMediaTypeFormatter());
}
return await Task.FromResult<HttpResponseMessage>(response);
}
}
Мой класс ошибок:
public class Error
{
public string error { get; set; }
public string description { get; set; }
public string url { get; set; }
}