zoukankan      html  css  js  c++  java
  • .net Core自定义中间件中读取Request.Body和Response.Body的内容

    1 .Net Core 2.X版本

    public IActionResult Index()
    {
        Request.EnableRewind();
        using (var reader = new StreamReader(Request.Body))
        {
            var body = reader.ReadToEnd();
            // Do something
            Request.Body.Seek(0, SeekOrigin.Begin);
            body = reader.ReadToEnd();
        }
        // More code
        return View("Index");
    }

    2 .NET Core 3.0及以上版本

    public class SignatureMiddleware
        {
            private readonly RequestDelegate _next;
    
            public SignatureMiddleware(RequestDelegate next)
            {
                _next = next;
            }
    
            public async Task InvokeAsync(HttpContext context) 
            {
                //启用读取request
                context.Request.EnableBuffering();
    
                //变量设置
                var request = context.Request;
                var response = context.Response;
    
                //请求body
                using var requestReader = new StreamReader(request.Body);
                var requestBody = await requestReader.ReadToEndAsync();
                request.Body.Position = 0;
    
                //设置stream存放ResponseBody
                var responseOriginalBody = response.Body;
                using var memStream = new MemoryStream();
                response.Body = memStream;
                
                // 执行其他中间件
                await _next(context);
    
                //处理执行其他中间件后的ResponseBody
                memStream.Position = 0;
                var responseReader = new StreamReader(memStream);
                var responseBody = await responseReader.ReadToEndAsync();
                memStream.Position = 0;
                await memStream.CopyToAsync(responseOriginalBody);
                response.Body = responseOriginalBody;
            }
        }

    参照:https://www.cnblogs.com/lwqlun/p/10954936.html

  • 相关阅读:
    史上最强内网渗透知识点总结
    最全的网站渗透测试详细检测方法
    java代码审计
    信息收集
    Java Web安全之代码审计
    Bell-Lapadula和Biba的改进安全模型与应用
    浅谈Forrester零信任架构评估的7个技术维度
    CMD命令混淆高级对抗
    一篇文章带你领悟Frida的精髓(基于安卓8.1)
    svg作图
  • 原文地址:https://www.cnblogs.com/dongh/p/15656956.html
Copyright © 2011-2022 走看看