.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; //获取一个类似字典集合。
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2019-03-20 PageAdmin建站系统模板制作教程1:Razor简介