【问题标题】:Status 400 from WebApi when calling PostAsJsonAsync from Blazor Client从 Blazor 客户端调用 PostAsJsonAsync 时来自 WebApi 的状态 400
【发布时间】:2022-01-27 04:36:42
【问题描述】:

调用我的 Web Api 时出现以下错误

System.Net.Http.HttpClient.IMyDataService.LogicalHandler[101]
          End processing HTTP request after 70.5ms - 400

我正在使用 PostAsJsonAsync,它就像它不喜欢客户端中的 TValue 对象。 在调试模式下从客户端运行时,Api 控制器中的断点从未命中并立即返回状态 400。

我已经通过发送一个简单的字符串对此进行了测试,它可以工作,但在使用模型时它就不起作用了。

public async Task<MyModel> AddNew(MyModel model)
{
    var jsonSerializerOptions = new JsonSerializerOptions() { PropertyNameCaseInsensitive = true };
    var response = await _httpClient.PostAsJsonAsync($"api/add-model", model, jsonSerializerOptions);
    
...
    return model;
}

这让我很困惑,因为我有另一个带有发布请求的 API 控制器;在另一个组件中,它工作得非常好。

控制器:

[HttpPost("add-model")]
public async Task<ActionResult<MyModel>> AddNewModel(MyModel model)
{
...
}

【问题讨论】:

  • MyModel 中有什么?请尝试以下操作:1. public async Task&lt;ActionResult&lt;MyModel&gt;&gt; AddNewModel([FromBody]MyModel model)。 2.设置完整路由[HttpPost("/api/add-model")].
  • 我确实尝试了带有字符串示例的 frombody,该示例有效,但我假设我正在使用未使用 frombody 的对象(我的其他控制器以这种方式工作)。完整路径无关紧要,因为通信使用字符串进行。但稍后我会尝试两者并发布结果。
  • 400“错误请求”的原因之一是超过了post参数限制。如果模型非常大,您可以检查一下。
  • 我外出时有一个理论,看起来这就是原因。我只是填充了一些字段,我猜服务器不喜欢它收到的内容。作为一项测试,我已经填充了每个字段,并且我得到了状态 200。我确实在模型类设置中有很多字段允许空值,所以不知道为什么会出现问题。

标签: c# asp.net http-post blazor webapi


【解决方案1】:

问题是因为我只填充了一些字段以发送到 API。 我尝试了一个测试来填充每个字段并将其发送过来,它已经工作并返回了状态 200。

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 2016-10-20
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 2015-04-20
    相关资源
    最近更新 更多