Demo/Demo.WebApi/Core/Interceptors.cs
(完整代码) 1KBusing 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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
