ASP.NET Core WebAPI 中多次读取 Request.Body 报错的问题

1. 错误信息:”Stream was not readable“

2. 场景:在controller 中第一步,使用如下方法读取Request.Body,第二次再使用该方法读取时,出现”Stream was not readable“的报错。

string rawRequest = string.Empty;
using (var reader = new StreamReader(Request.Body))
{
    rawRequest = await reader.ReadToEndAsync();
}

3. 解决方式

启用缓冲,在第一次读取流之前, 添加如下代码, 并在第二次读取之前重置流的位置,如下所示

// 启用缓冲,允许多次读取 Request.Body
    HttpContext.Request.EnableBuffering();
 // 重置流的位置以供后续读取
    HttpContext.Request.Body.Position = 0;

 

posted @ 2024-08-28 17:12  鲁燕云端  阅读(159)  评论(0)    收藏  举报