发布时间:2022-03-04 16:13:14来源:本站阅读(935)
我的目的很简单,就是在Filter中读取数据记录请求日志。
先看.NET CORE 3.1的代码
var requestData = context.HttpContext.Request.Body;
requestData.Position = 0;
string rawRequest=string.Empty;
using (var reader = new StreamReader(context.HttpContext.Request.Body, Encoding.UTF8, true, 1024, true))
{
rawRequest = reader.ReadToEndAsync().Result;
} 以上代码在.NET CORE 3.1正常使用,但在.NET 6中就不好使了。
经过搜索解决,但原因暂时没搞明白。
上代码
在Program中加
app.Use(async (context, next) =>
{
var requestBodyStream = new MemoryStream();
await context.Request.Body.CopyToAsync(requestBodyStream);
requestBodyStream.Seek(0, SeekOrigin.Begin);
string body = await new StreamReader(requestBodyStream).ReadToEndAsync();
context.Items["body"] = body;
requestBodyStream.Seek(0, SeekOrigin.Begin);
context.Request.Body = requestBodyStream;
await next();
}); 然后在Filer中读取
var requestData = context.HttpContext.Items.TryGetValue("body",out object body); body就是我想要的。
难道 .NET 6 执行顺序有变?有空再看吧,先记录。
关键字: body
下一篇: windows系统设置默认图片查看
987
3690
1544
1708
1561
1591
896
1154
1675
1129
10279
6297
5838
5411
4908
4609
3825
3690
3645
3561