.net core6 的webapi过滤器中获取post参数方法


今天项目升级到net core6踩了一个坑,记一下笔记。

在.net core6 的webapi的过滤器获取post参数,不能再通过传统Request.Form方法提交,因为前端只能采用application/json方式请求数据,Request.Form是null。

方法1:采用Request.EnableBuffering()倒带读取。

在progrome中开启倒带读取。

1
2
3
4
5
6
//启用倒带, 在过滤器中可以获取post参数
app.Use((context, next) =>
{
    context.Request.EnableBuffering();
    return next(context);
});

 在过滤中通过下面但是读取参数

1
2
3
4
//filterContext.HttpContext.Request.EnableBuffering();//net5.0之前可以直接启用倒带, 读取request.body里的的参数,net6后必须在中间件中配置。
filterContext.HttpContext.Request.Body.Position = 0;
using var reader = new StreamReader(filterContext.HttpContext.Request.Body, Encoding.UTF8);
var param = reader.ReadToEndAsync().Result; //获取一个json数据

 

方法2:通过ActionDescriptor.Parameters获取参数

演示代码如下:

         var parameters = filterContext.ActionDescriptor.Parameters;
            foreach (var parameter in parameters)
            {
                var data = filterContext.ActionArguments; //获取一个类似字典集合。
            }



posted @   鹅是码农  阅读(594)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2019-03-20 PageAdmin建站系统模板制作教程1:Razor简介
点击右上角即可分享
微信分享提示