由于项目需要,对用户所有请求记录需要记录到数据库内,开始使用中间件方式可以读取,需要在Startup中设置同步读取:
ConfigureServices中添加允许同步读取Body代码:
services.Configure<Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions>(options =>
{
options.AllowSynchronousIO = true;
})
.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
Configure方法中,app.UseEndpoints之前添加如下代码
app.Use((context, next) =>
{
context.Request.EnableBuffering();
return next();
});
读取Post json数据:
var requestMethod = httpContext.Request.Method;
var requestURL = $"{httpContext.Request.Scheme}://{httpContext.Request.Host}{httpContext.Request.Path}";