【发布时间】:2020-07-03 09:46:16
【问题描述】:
当尝试通过 .net core 3.1 中的 rest api 更新(使用 PUT)时,我得到:
输入不包含任何 JSON 标记。 当 isFinalBlock 为真时,预期输入以有效的 JSON 令牌开头。 路径:$ |行号:0 | BytePositionInLine: 0。
这仅在尝试通过生产网站进行更新时发生,在本地它可以正常工作。作为测试,我通过创建一个新的 .net 核心项目并使用他们的默认示例 api 控制器 (WeatherForecastController) 将事情剥离到最基本的部分,我添加了一个新的更新方法:
[HttpPut]
public IActionResult Update([FromBody]WeatherForecast weatherForecast)
{
return Ok();
}
我发布了项目(仅进行了更改),发现通过邮递员进行测试时仍然遇到相同的错误。看来问题可能出在主持人方面,我已经向他们提出了支持票,但他们无法提供帮助。不幸的是,我完全不知道如何调试这个问题,我不知道在哪里或什么试图反序列化 json 并因此失败。任何帮助将不胜感激。
附:如果有帮助,在邮递员中,我将 body 设置为“raw”和“json”。我相当确定我发送的 json 可以正常工作,因为它可以在本地工作。
附言HttpPost 没有任何问题。
【问题讨论】:
-
如果您注意到返回的状态码就好了。你最有可能收到400,这基本上是指你的请求。我花了好几个小时来解决这个问题,直到 5 小时后我才想起 4xx 错误是基于客户端的,而不是后端的......所以我需要仔细检查我的 ajax 请求并确保我做的一切都是正确的。
标签: c# json asp.net-core asp.net-core-webapi asp.net-core-3.1