• AbpVnext/.NetCore获取请求数据与响应数据,进一步方便项目上线后的相关数据分析


    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;
            }
        }
    }
  • 相关阅读:
    0--分析JDK及其他开源框架的初衷
    2.2--RandomAccessFile实现类和它的关联类FileChannel
    2.1--RandomAccessFile实现类的关联类FileChannel类图
    2--IO包DataInput接口类图
    1--UML语言IO包组件图
    跟老齐学Python Django实战 5/n Second edition
    跟老齐学Python Django实战 3/n Second edition
    Vim
    跟老齐学Python Django实战 2/n Second edition
    跟老齐学Python Django实战 1/n Second edition
  • 原文地址:https://www.cnblogs.com/Fengge518/p/16352484.html
Copyright © 2020-2023  润新知