首页 > 其他分享 >[解决]Acton拦截器读取body内容后,方法内无法读取到body内容

[解决]Acton拦截器读取body内容后,方法内无法读取到body内容

时间:2024-07-04 11:54:21浏览次数:1  
标签:body Body 拦截器 读取 context reader

注意:

1、在拦截器处理Stream时,应避免使用using语句包裹StreamReader,因为这会导致Stream在读取完成后关闭,进而阻止后续的读取尝试

2、考虑到性能和稳定性,应尽可能使用异步方法读取Stream

reader.ReadToEndAsync()

3、当在拦截器中读取并处理Body后,记得将Stream位置重置

 context.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin);

 

解决后完整代码

1、开启请求体缓存:这样即便在拦截器中读取了Body,也不会影响Controller中的二次读取

app.Use(next => context =>
{
    context.Request.EnableBuffering();
    return next(context);
});

2、过滤器中代码

 var reader = new StreamReader(context.HttpContext.Request.Body, Encoding.UTF8);
 string body = await reader.ReadToEndAsync();
 context.HttpContext.Request.Body.Seek(0, SeekOrigin.Begin);

 3、方法内读取

 using var reader = new StreamReader(Request.Body, Encoding.UTF8);
 string body = await reader.ReadToEndAsync();

 

标签:body,Body,拦截器,读取,context,reader
From: https://www.cnblogs.com/Sunlimi/p/18283376

相关文章

  • Python(netCDF4库)读取.nc文件(NetCDF气象数据文件)
    importnetCDF4asncimportnumpyasnpimportmatplotlib.pyplotaspltimportcartopy.crsasccrsdefplot_currents(file_path,variable_name,lon_name,lat_name):"""绘制洋流并保存为JPEG图片。参数:file_path(str):NetCDF文件路径。v......
  • springboot的MultipartFile转File读取
    在SpringBoot中,处理文件上传时,MultipartFile接口被用来封装上传的文件信息。如果需要将MultipartFile转换为Java标准的File对象进行读取。以下是具体的操作流程:1.创建临时文件        首先,需要将接收到的MultipartFile对象转换为一个临时File对象。      ......
  • 读取.net core配置文件appsetting.json内容
    appsetting.json内容//省略部分代码...//代码生成相关"CodeCreatorInfo":{"xmlPath":"11111",//xml路径(绝对路径)"jsRootPaht":"2222",//js文件夹路径"Controllers":"333",//特殊Controller列表,逗号隔开......
  • c#读取CSV
    privatevoidReadCVS(YaJiangBigDataContext_content,TypeclassType,stringcsvPath){//YaJiangBigDataContext是EF的Contex,本例中可以替换为List<Object>//csvPath必须完整的物理......
  • WebAPI项目框架新建读取配置文件帮助类
    在.netcorewebapi项目中,我们会把配置信息同意放置在appsettings.json中,通过新建读取帮助类,更加简单的读取配置信息。新建公共类库文件夹Common,新建公共类库Web.Core.Common在Web.Core.Common类库下新建Helper文件夹,新建AppSettings帮助类 .NetCore6.0WebAPI项目框架搭......
  • IntelliJ IDEA java maven项目读取配置文件信息 java.util.ResourceBundle 方式
    一、在main目录下新建resources目录并将其设为资源文件目录  创建config.properties文件二、在pom.xml中添加下面代码 只这样打包后jar才能有配置文件<resources><resource><filtering>true</filtering><directory>src/main/......
  • 从指定的CSV文件中读取图片URL,批量下载这些图片到指定的目录
    导入必要的库:包括pandas用于处理CSV文件,requests用于发送网络请求,以及os和time等进行文件系统操作和可能的时间控制。设置路径:指定了CSV文件的位置和图片将要保存的目录。如果保存目录不存在,脚本会自动创建。配置HTTP请求会话:使用requests.Session()建立会话,并通过Retry和......
  • WebApi读取配置文件帮助类
    1///<summary>2///appsettings.json操作类3///</summary>4publicclassAppSettings5{6staticIConfigurationConfiguration{get;set;}7staticstringcontentPath{get;set;}89p......
  • QT 读取Json 配置文件
    {QStringProjectPath="";QStringConfigPath=".json";constchar*PathEnvVar=getenv("");if(PathEnvVar!=nullptr){ProjectPath=PathEnvVar;ConfigPath=ProjectPath+"/.json&quo......
  • python 读取条形码以及二维码
    #在AI运用中经常需要读取物体的条码信息,这一步在很多的场景应用中变得非常重要#本文就来浅谈一下pyzbar的运用。一、安装pyzbar的库:pipinstallpyzbar-ihttps://pypi.tuna.tsinghua.edu.cn/simple二、pyzbar库的介绍:pyzbar库是一个基于Python的二维码生成和识别库,它提......