I have a Web API, When the incoming request is not valid then the API sends back a HttpStatusCode.BadRequest and API would also add a CorrelationId into Response's HttpHeader. Something like below
public class ValidateRequestAttribute : ActionFilterAttribute
{
    public ValidateRequestAttribute()
    {
    }
    public override void OnActionExecuting(ActionExecutingContext context)
    {
        if (context.ModelState.IsValid == false)
        {               
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            context.HttpContext.Response.Headers.Add("x-correlationid", "someid");
            context.Result = new ContentResult()
            {
                Content = "bad request."
            };
       }
    }
}
On client side im using HttpClient to access the API. I am not sure how client would retrieve HttpStatusCode and HttpHeader here. Here is my client code
    public bool Process(url)
    {
        bool result = false;
        try
        {
            Task.Run(async () => await _httpClient.GetStringAsync(url).ConfigureAwait(false)).Result;
        }
        catch (Exception ex)
        {
            if(ex is AggregateException)
            {
                var aggregateException = ex as AggregateException;
                foreach(var innerException in aggregateException.InnerExceptions)
                {
                    if (innerException is HttpRequestException)
                    {
                        var httpRequestException = innerException as HttpRequestException;
                        // how do i get StatusCode and HttpHeader values here??
                    }
                }
            }       
        }
        return result;
    }
I have already gone through SO post here and MSDN article here and also Stephen Cleary's article here
Even though its recommended to make async all the way down, I this case Client and API are both disconnected from each other and client is synchronous. Note that Client's Process method is synchronous method.
 
     
    