«Входные данные не содержат JSON токенов» при попытке обновления с помощью API - PullRequest
0 голосов
/ 23 марта 2020

При попытке обновить (используя PUT) через остальные API. net core 3.1 Я получаю:

Вход не содержит токенов JSON. Ожидается, что ввод начнется с действительного токена JSON, когда isFinalBlock равен true. Путь: $ | LineNumber: 0 | BytePositionInLine: 0.

Это происходит только при попытке обновления через рабочий сайт, локально он работает нормально. В качестве теста я отбросил вещи обратно к базовым элементам, создав новый базовый проект. net и используя их пример API-контроллера по умолчанию (WeatherForecastController), добавив новый метод обновления:

 [HttpPut]
 public IActionResult Update([FromBody]WeatherForecast weatherForecast)
 {
      return Ok();
 }

Я опубликовал проект (только с этим изменением) и обнаружил, что я все еще получаю ту же ошибку при тестировании через почтальона. Кажется, что проблема, возможно, на стороне хозяина, и я уже поднял билет поддержки с ними, но они не смогли помочь. К сожалению, я абсолютно не знаю, как отладить эту проблему, я не знаю, где или что пытается десериализовать json и, следовательно, не удается. Любая помощь будет принята с благодарностью.

PS Если это поможет, в почтальоне я установил body в "raw" и "json". Я вполне уверен, что отправляемое json нормально, так как работает локально.

PPS HttpPost работает без проблем.

1 Ответ

0 голосов
/ 27 марта 2020

Я решил эту проблему, изменив настройку ASP. NET: «4.0 (Integrated Pipeline)» на «4.0» на панели управления веб-хостинга. HttpPut, кажется, теперь работает нормально.

Я понятия не имею, почему это работает, и было бы интересно услышать любые предложения.

...