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