Demo/Demo.WebApi/Core/Interceptors.cs

(完整代码) 1KB

using Kernelx.Cmpts.ServiceModels;
using Kernelx.Cmpts.ServiceModels.Default;
using Kernelx.Contexts;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo.WebApi.Core
{

    internal class DemoServiceModelExceptionCatcher : IServiceModelExceptionCatcher
    {
        public void Error(Type model, Stage stage, IRequestParameter requestParameter, Exception ex)
        {
            var current = ContextWorkload.Current;
            //介入代码
        }
    }

    internal class DemoResponseModelObserver : IServiceModelWatcher
    {
        public void Completed<TModel, TServiceModelContext, TInput>(TModel model, TServiceModelContext serviceModelContext, TInput input)
        where TModel : DefaultServiceModelBase<TServiceModelContext, TInput>
        where TServiceModelContext : DefaultServiceModelContextBase, new()
        where TInput : class, new()
        {
            var serializer = serviceModelContext.CurrentWorkload.GetJsonSerializer();
            var inputStr = serializer.SerializeObject(input is not NoneInputObject ? input : serviceModelContext.RequestParameter.ToRequestObject());
            var p1 = !string.IsNullOrEmpty(inputStr) ? $" \r\n  Input: {inputStr} ; " : " ";
            if (model is IResponseMessage response && response.Status == ResponseStatus.Fail)
            {
                var data = $" \r\n  Response:{response.GetDetailedMessage()}{p1} ";
                serviceModelContext.Logger?.Log(LogLevel.Error, data);
            }
            else
            {
                // var data = $" \r\n  Response:{serializer.SerializeObject(model, model.GetType())}{p1} ";
                var data = $" \r\n  Response:{serializer.SerializeObject(model, typeof(DefaultServiceModelBase<TServiceModelContext, TInput>))}{p1} ";
                serviceModelContext.Logger?.Log(LogLevel.Debug, data);
            }
        }

    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。