ASP.NET Core пытается десериализовать {"APIKey":"1283f0f8..."}
из JSON в значение string
и завершается неудачно, поскольку ожидает, что ввод является допустимой строкой JSON.
Другими словами, если бы ваше тело было "{\"APIKey\":\"1283f0f8...\"}"
, вы бы имели строку JSON во входной переменной, как вы ожидаете.
Чтобы получить значение APIKey
без изменения HTTP-запроса, создайте тип ввода:
public class Input
{
public string ApiKey { get; set; }
}
и используйте это как ввод действия вашего контроллера:
[HttpPost]
public void Post([FromBody] Input input)
{
var apiKey = input.ApiKey;
// etc
}
Либо измените HTTP-запрос на отправку string
:
// ...
var content = new StringContent(JsonConvert.SerializeObject(json), Encoding.UTF8, "application/json");
// ...
Обратите внимание на использование JsonConvert.SerializeObject()
вместо ToString()
; "foo".ToString()
- это всего лишь "foo"
, а вы хотите "\"foo\""
.