【问题标题】:"The input does not contain any JSON tokens" when trying to update using API尝试使用 API 更新时“输入不包含任何 JSON 令牌”
【发布时间】: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


【解决方案1】:

我已通过在 Web 主机控制面板中将设置 ASP.NET:“4.0(集成管道)”更改为“4.0”来解决此问题。 HttpPut 现在似乎可以正常工作了。

我不知道它为什么起作用,并且有兴趣听到任何建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 2020-06-22
    • 2022-07-26
    • 2022-06-21
    • 2022-10-15
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多