无法为404 http状态代码自定义DelagatingHandler中的内容

时间:2019-02-22 10:59:18

标签: asp.net asp.net-web-api2

我无法覆盖404 http错误,但它适用于其他任何http代码,例如400:

enter image description here

如果我删除该行并保留404 http代码

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; }
}

0 个答案:

没有答案