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;
}