Я мигрирую с ASP.NET Core 2.2 на 3.0 и теперь у меня проблема. Если я напишу код, подобный этому:
[HttpPost("test")]
public async Task Test(object o) {
HttpContext.Request.EnableBuffering();
var result = await HttpContext.Request.BodyReader.ReadAsync();
var buffer = result.Buffer;
Console.WriteLine(System.Text.Encoding.Default.GetString(buffer.FirstSpan));
HttpContext.Request.BodyReader.AdvanceTo(buffer.End);
}
Я получу пустое сообщение в консоли, но если я удалю параметр
[HttpPost("test")]
public async Task Test() {
HttpContext.Request.EnableBuffering();
var result = await HttpContext.Request.BodyReader.ReadAsync();
var buffer = result.Buffer;
Console.WriteLine(System.Text.Encoding.Default.GetString(buffer.FirstSpan));
HttpContext.Request.BodyReader.AdvanceTo(buffer.End);
}
, я получу сообщение от тела
curl -X POST \ http://localhost:5000/test \ -H 'Тип содержимого: application / json' \ -d '{"test": 123}'