首页 > 其他分享 >.net 6 在异常过滤器中记录post参数 EnableBuffering

.net 6 在异常过滤器中记录post参数 EnableBuffering

时间:2022-11-01 15:47:32浏览次数:84  
标签:EnableBuffering post Request param context 过滤器 net HttpContext

在请求到达过滤器时Steam已经被读取了,此时我们在过滤器中使用EnableBuffering并没有起作用, 还需要在中间件里使用EnableBuffering

在.net 6有一些稍微的不同

1. 在program.cs里通过中间件启用倒带

//启用倒带, 在发生异常时, 可以通过过滤器获取post参数
app.Use((context, next) =>
{
    context.Request.EnableBuffering();
    return next(context);
});

2. 在异常过滤器里使用

        /// <summary>
        /// OnException
        /// </summary>
        /// <param name="context"></param>
        public void OnException(ExceptionContext context)
        {
            //请求参数
            var param = "";
            if (context.HttpContext.Request.Method == "GET")
            {
                param = context.HttpContext.Request.QueryString.Value;
            }
            else if (context.HttpContext.Request.Method == "POST")
            {
                context.HttpContext.Request.EnableBuffering();//启用倒带, 读取request.body里的的参数, 还必须在在Program.cs里也启用倒带功能
                context.HttpContext.Request.Body.Position = 0;
                using var reader = new StreamReader(context.HttpContext.Request.Body, Encoding.UTF8);
                param = reader.ReadToEndAsync().Result;
            }
        }

 

标签:EnableBuffering,post,Request,param,context,过滤器,net,HttpContext
From: https://www.cnblogs.com/fancyblogs/p/16847937.html

相关文章

  • Vue项目配置postcss-pxtorem
    Vue2项目安装指定版本最新版本@6会报错:PostCSSpluginpostcss-pxtoremrequiresPostCSS8npmipostcss-pxtorem@5.1.1-D配置vue.config.jsmodule.exports=......
  • 阿里云OSS前端web直传 .net C# .net core
    背景阿里云oss使用web直接上传的有两种方式1.是通过阿里云自己的jssdk上传,但是这种上传方式有个比较麻烦的地方,获取授权的时候配置会比较麻烦2.通过form表单提交......
  • Joint Item Recommendation and Attribute Inference: An Adaptive Graph Convolution
    目录概符号说明本文思路WuL.,YangY.,ZhangK.,HongR.,FuY.andWangM.Jointitemrecommendationandattributeinference:anadaptivegraphconvolutional......
  • 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
    一:背景1.讲故事前段时间有位朋友加微信,说他的程序直接​​CPU=100%​​,每次只能手工介入重启,让我帮忙看下到底怎么回事,哈哈,这种CPU打满的事故,程序员压力会非常大,我让朋友......
  • 记一次 .NET 某医疗器械 程序崩溃分析
    一:背景1.讲故事前段时间有位朋友在微信上找到我,说他的程序偶发性崩溃,让我帮忙看下怎么回事,上面给的压力比较大,对于这种偶发性崩溃,比较好的办法就是利用AEDebug在程序崩溃......
  • 学习笔记-dotnet安全
    dotnet安全免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.教程aleenzz/.NET_study案例越权漏洞......
  • 防止程序二次运行(VB.NET/C#)
    C# usingSystem.Reflection;usingSystem.Runtime.InteropServices;namespace防止程序二次运行{staticclassProgram{[DllImport("user32.dll")]......
  • .net maui blazor创建存储自定义目录文件
    stringdir="/storage/emulated/0/Android/data/com.example.myapp/data";if(!Directory.Exists(dir)){Directory.Create......
  • postgresql13 rpm方式安装
    环境:OS:Centos7DB:13.8 1.介质下载可以到官网下载相应版本的rpm介质我这里下载的如下介质[root@localhostpg]#ls-lrttotal7968-rw-r--r--.1rootroot1481300......
  • xxl-job 报:java.net.BindException: Address already in use: bind
    在低版本的xxl-job中,初始化XxlJobSpringExecutor执行器需要在@Bean中加上initMethod="start",destroyMethod="destroy",但是在高版本的xxl-job(如2.1.2)则需......