zoukankan      html  css  js  c++  java
  • .net core 3.1在读取 Request.Body时不支持 Request.Body.Position = 0的设置

     ASP.NET Core 中的 Request.Body 虽然是一个 Stream ,但它是一个与众不同的 Stream —— 不允许 Request.Body.Position=0 ,这就意味着只能读取一次,要想多次读取,需要借助 MemoryStream 

    在 .net core 3.0中修复了这个问题,只要启用倒带功能,就可以让  Request.Body 回归正常 Stream 。

    需要引入程序集:Microsoft.AspNetCore.Http

    使用方式:

    在Startup.cs中定义Middleware,设置缓存Http请求的Body数据

    app.Use(async (context, next) =>
    {
            context.Request.EnableBuffering();
             await next.Invoke();
    });

    在使用出写:

            private string GetHttpBody()
            {
                Request.EnableBuffering();
                Request.Body.Position = 0;
                using (var reader = new StreamReader(Request.Body))
                {
                    return reader.ReadToEnd();
                }
            }
  • 相关阅读:
    增删改
    创建数据库
    数据库的列类型
    数据库
    Python os.ttyname() 方法
    Python os.tmpnam() 方法
    Python os.tmpfile() 方法
    Python os.tempnam() 方法
    Python os.tcsetpgrp() 方法
    LR运行负载测试场景-笔记
  • 原文地址:https://www.cnblogs.com/yxcn/p/14049349.html
Copyright © 2011-2022 走看看