AbpVnext/.NetCore获取请求数据与响应数据,进一步方便项目上线后的相关数据分析,
下面只提供一个思路,数据写到日志文件还是数据库表中,看具体的要求
思路主要是系统自带的类似Aop的过滤器来实现的
1:测试效果截图
2:主要代码截图
3:主要测试代码
using System; using System.Threading.Tasks; using Newtonsoft.Json; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; namespace GDBS.JasonService.HttpApi.Hosting.Filters { public class TestAop01FilterAttribute : IActionFilter { public void OnActionExecuted(ActionExecutedContext context) { Console.WriteLine("===2--OnActionExecuted==="); } public void OnActionExecuting(ActionExecutingContext context) { var requstionData = context.ActionArguments; if (requstionData != null) { string jsonStr = JsonConvert.SerializeObject(requstionData); Console.WriteLine($"===1=OnActionExecuting==={jsonStr}==="); } else { Console.WriteLine("===1=OnActionExecuting==="); } } } public class TestAop02Filter : IAsyncResultFilter { public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) { string controllerName = context.ActionDescriptor.RouteValues["Controller"].ToString(); string actionName = context.ActionDescriptor.RouteValues["action"].ToString(); ObjectResult objresult = context.Result as ObjectResult; if (objresult != null) { string jsonStr = JsonConvert.SerializeObject(objresult); Console.WriteLine("=====3====controllerName=" + controllerName + ", actionName=" + actionName + $"====jsonStr={jsonStr}======"); } else { Console.WriteLine("=====3====controllerName=" + controllerName + ", actionName=" + actionName + "=========="); } await Task.CompletedTask; } } }