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;
}
}
}
如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!
好了今天就先到这里,下次有时间再更新,如果存在不合理的地方,欢迎大家多多指教留言!!!
我的博客园地址:https://www.cnblogs.com/Fengge518