From 06e77aa8fde73b07ace3f86eff52510ef22a46a2 Mon Sep 17 00:00:00 2001 From: Gary <1511313969@qq.com> Date: Mon, 22 Sep 2025 07:13:46 +0000 Subject: [PATCH] =?UTF-8?q?update=20Yi.Abp.Net8/framework/Yi.Framework.Asp?= =?UTF-8?q?NetCore/UnifyResult/Fiters/FriendlyExceptionFilter.cs.=20?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E4=B8=BA=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=98=AF=EF=BC=8C=E5=B0=86errors=E4=BC=A0=E5=9B=9E=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gary <1511313969@qq.com> --- .../Fiters/FriendlyExceptionFilter.cs | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/Yi.Abp.Net8/framework/Yi.Framework.AspNetCore/UnifyResult/Fiters/FriendlyExceptionFilter.cs b/Yi.Abp.Net8/framework/Yi.Framework.AspNetCore/UnifyResult/Fiters/FriendlyExceptionFilter.cs index cf86d283..e6392990 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.AspNetCore/UnifyResult/Fiters/FriendlyExceptionFilter.cs +++ b/Yi.Abp.Net8/framework/Yi.Framework.AspNetCore/UnifyResult/Fiters/FriendlyExceptionFilter.cs @@ -1,4 +1,4 @@ -// MIT 许可证 +// MIT 许可证 // // 版权 © 2020-present 百小僧, 百签科技(广东)有限公司 和所有贡献者 // @@ -17,25 +17,25 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; using Volo.Abp.AspNetCore.Mvc; -using Volo.Abp.DependencyInjection; +using Volo.Abp.Validation; using Yi.Framework.Core.Extensions; namespace Yi.Framework.AspNetCore.UnifyResult.Fiters; /// -/// 友好异常拦截器 +/// 友好异常拦截器 /// public sealed class FriendlyExceptionFilter : IAsyncExceptionFilter { /// - /// 异常拦截 + /// 异常拦截 /// /// /// public async Task OnExceptionAsync(ExceptionContext context) { - // 排除 WebSocket 请求处理 if (context.HttpContext.IsWebSocketRequest()) return; @@ -44,20 +44,23 @@ public sealed class FriendlyExceptionFilter : IAsyncExceptionFilter // 解析异常信息 var exceptionMetadata = GetExceptionMetadata(context); - - IUnifyResultProvider unifyResult = context.GetRequiredService(); + var unifyResult = context.GetRequiredService(); // 执行规范化异常处理 context.Result = unifyResult.OnException(context, exceptionMetadata); - + // 创建日志记录器 var logger = context.HttpContext.RequestServices.GetRequiredService>(); + var errorMsg = ""; + if (exceptionMetadata.Errors != null) errorMsg = "\n" + JsonConvert.SerializeObject(exceptionMetadata.Errors); + + // 记录拦截日常 - logger.LogError(context.Exception, context.Exception.Message); + logger.LogError(context.Exception, context.Exception.Message + errorMsg); } /// - /// 获取异常元数据 + /// 获取异常元数据 /// /// /// @@ -74,22 +77,25 @@ public sealed class FriendlyExceptionFilter : IAsyncExceptionFilter // 判断是否是 ExceptionContext 或者 ActionExecutedContext var exception = context is ExceptionContext exContext ? exContext.Exception - : ( - context is ActionExecutedContext edContext - ? edContext.Exception - : default - ); + : context is ActionExecutedContext edContext + ? edContext.Exception + : default; + + if (exception is AbpValidationException validationException) + { + errors = validationException.ValidationErrors; + isValidationException = true; + } // 判断是否是友好异常 if (exception is UserFriendlyException friendlyException) { - int statusCode2 = 500; + var statusCode2 = 500; int.TryParse(friendlyException.Code, out statusCode2); isFriendlyException = true; errorCode = friendlyException.Code; originErrorCode = friendlyException.Code; - statusCode = statusCode2==0?403:statusCode2; - isValidationException = false; + statusCode = statusCode2 == 0 ? 403 : statusCode2; errors = friendlyException.Message; data = friendlyException.Data; }