Не удается настроить содержимое в DelagatingHandler для кода состояния http 404 - PullRequest
0 голосов
/ 22 февраля 2019

Я не могу переопределить ошибку http 404, но она работает для любых других кодов http, таких как 400:

enter image description here

Если удалить строку и сохранить404 http code

response = request.CreateResponse(HttpStatusCode.BadRequest);

Я получаю это стандартное сообщение:

enter image description here

, а не мое специальное сообщение об ошибке, как для 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; }
}
...