查看reques ContentLength 有长度,读取body却为空
代码如下:
var reader = new System.IO.StreamReader(Request.Body);
string contentFromBody = await reader.ReadToEndAsync();
contentFromBody 为空
我post的是一个Json字符串
读取之前加上下面的代码
Request.EnableBuffering();
还是不行,还有个问题Request.Body.Length一直是0
@腐乳: 是否可以提供重现这个问题的示例代码?
@dudu:
[Route("AddProfit")]
public async Task<ActionResult<Result>> AddProfit(ProfitBase model)
{
string SupplierRoleId = model.SupplierRoleId;
Request.EnableBuffering();
Request.Body.Seek(0, System.IO.SeekOrigin.Begin);
var reader = new System.IO.StreamReader(Request.Body);
string contentFromBody = await reader.ReadToEndAsync();
}
我想用这个接口接不同种类型的参数。
ProfitBase 是一个基类,利用这个基类先把一些数据取出来,然后再取request里取出请求的json
@腐乳: model 绑定时已经将 Request.Body 中的数据都读掉了
@dudu: 不能回去重新读么
@腐乳: 在model 绑定之前没有进行 Request.EnableBuffering()
@腐乳: 可以通过 middleware 在请求进入 asp.net core web api 之前进行 Request.EnableBuffering()
Request.Body.Seek(0, SeekOrigin.Begin);
加上这一行,再读
还是不行,还有个问题Request.Body.Length一直是0
可以吧入参和接收参数的详细代码贴出来看下。
[Route("AddProfit")]
public async Task<ActionResult<Result>> AddProfit(ProfitBase model)
这个model的类型ProfitBase是个基类,实际上会有不同类型的数据进来,打算通过request.body来解析,但是解析不出来