Один из наших клиентов настаивает на отправке необработанного тела запроса нашему API (не json или xml), и, поскольку ядро net не поддерживает его по умолчанию, я использовал аналогичную идею с ниже:
[HttpPost]
[Route("example/{path}")]
public async Task<string> ReadStringDataManual(string path)
{
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
return await reader.ReadToEndAsync();
}
}
Однако в производстве мы поняли, что API выдает исключение ниже при загрузке.
System.Runtime.CompilerServices.TaskAwaiter:UnsafeOnCompletedInternal (method time = 1 ms, total time = 1 ms)
undefined(2011ms): await continuation
Я не уверен, связано ли это с Кестрелом, но я считаю, это из-за обширной операции ввода-вывода. Я также попробовал наивный способ - добавить параметр с атрибутом [FromBody]
в сигнатуру метода, но не повезло.
Есть ли другой вариант для чтения необработанного тела запроса без использования потокового считывателя?
Спасибо.