I've googled a lot searching for an answer to my problem with no luck so, let's try if someone else can help me.
I have a Web Api 2 action to register an user after doing some validations. If everything works, it return the serialized user and if don't, an error message sent within a BadRequest response.
At the other hand, I have a WPF client that calls the API for a response.
My problem is that I can't get the reason sent by the error, the client just get the Bad Request error message.
This is a part of the code:
Web Api Action:
public async Task<IHttpActionResult> AddUser(NewUserDTO {
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }
    if (!model.IdCliente.HasValue)
    {
        ModelState.AddModelError("", "No existe el cliente");
        return BadRequest(ModelState);
    }
    // do save stuff
    return Ok(TheModelFactory.Create(user));
}
Client function:
public async Task<ApplicationUserDTO> AddUser(NewUserDTO dto) {
    using (var client = new HttpClient()) {
        client.BaseAddress = new Uri(_urlBase);
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
        HttpContent content = new StringContent(JsonConvert.SerializeObject(dto));
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
        HttpResponseMessage responseMessage = await client.PostAsync("api/accounts/AddUser", content);
        if (responseMessage.IsSuccessStatusCode) {
            var responseJson = await responseMessage.Content.ReadAsStringAsync();
            user = JsonConvert.DeserializeObject<ApplicationUserDTO>(responseJson);
        }
        else
             MessageBox.Show(responseMessage.Content.ReadAsStringAsync().Result);
        return user;
    } 
}
Anyone can help?
Edited:
DTO:
[Serializable]
public class NewUserDTO {
public int? IdCliente { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string Email { get; set; }
public string Role { get; set; }
public string Password { get; set; } }
Anyway... the dto is sent correctly to api nut, here's the serialized dto as you asked for:
"{\"IdCliente\":null,\"UserName\":\"Toni\",\"Email\":\"[email protected]\",\"Role\":\"Filtra\",\"Password\":\"TONI\"}"
                return new BadRequestErrorMessageResult(yourErrorMessage);
var errorMessage = responseMessage.Content.ReadAsStringAsync().GetAwaiter().GetResult();
MessageBox.Show(errorMessage);
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With