.net中间件读取Request.Body,并使Request.Body在后续操作中可以重复读取
public async Task Invoke(HttpContext context)
{
context.Request.EnableBuffering();
StreamReader requestReader = new StreamReader(context.Request.Body);
string data = await requestReader.ReadToEndAsync();
context.Request.Body.Position = 0;
Console.WriteLine(data);
}
关键这两句:
context.Request.EnableBuffering(); //要写在操作Request.Body的最前边
context.Request.Body.Position = 0; //写操作Request.Body完成后