发布时间:2022-03-04 16:13:14来源:本站阅读(734)
我的目的很简单,就是在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系统设置默认图片查看
974
1306
1585
982
941
945
795
248
683
1437
9598
6001
5528
5122
4573
4276
3421
3340
3339
3274