gpt4 book ai didi

c# - 无法在 Web Api 2 中获取有关 BadRequest 的错误消息

转载 作者:太空狗 更新时间:2023-10-29 20:04:21 25 4
gpt4 key购买 nike

我在谷歌上搜索了很多,但没有找到我的问题的答案,所以,让我们试试看是否有人可以帮助我。

在进行一些验证后,我有一个 Web Api 2 操作来注册用户。如果一切正常,它返回序列化的用户,如果不正常,则在 BadRequest 响应中发送一条错误消息。

另一方面,我有一个调用 API 进行响应的 WPF 客户端。

我的问题是我无法获取错误发送的原因,客户端只是收到 Bad Request 错误消息。

这是部分代码:

  • 网络 API 操作:

    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));
    }
  • 客户端函数:

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

有人可以帮忙吗?

编辑:

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

无论如何...dto 已正确发送到 api nut,这是您要求的序列化 dto:

"{\"IdCliente\":null,\"UserName\":\"Toni\",\"Email\":\"soft@moreno-csa.com\",\"Role\":\"Filtra\",\"Password\":\"TONI\"}"

最佳答案

应用程序接口(interface)

return new BadRequestErrorMessageResult(yourErrorMessage);

客户端

var errorMessage = responseMessage.Content.ReadAsStringAsync().GetAwaiter().GetResult();
MessageBox.Show(errorMessage);

关于c# - 无法在 Web Api 2 中获取有关 BadRequest 的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35544340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com