HttpActionExecutedContext response content always is empty

964 Views Asked by At

When throws an exception in server side, the response content in OnException works well but in client side (SendAsync) it is empty..

public override void OnException(HttpActionExecutedContext context)
{
    var exception = context.Exception;
    if (exception == null) return;

    context.Response = new HttpResponseMessage(HttpStatusCode.InternalServerError);
    context.Response.Content = new StringContent(exception.Message);
}

protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    HttpResponseMessage response = null;

    var responseBodyAsText = string.Empty;
    try
    {
        response = await base.SendAsync(request, cancellationToken);

        if (!response.IsSuccessStatusCode)
        {
            responseBodyAsText = await response.Content.ReadAsStringAsync();
        }

        response.EnsureSuccessStatusCode();
    }
    catch (HttpRequestException ex)
    {
        throw new BusinessException(responseBodyAsText);
    }

    return response;
}
0

There are 0 best solutions below