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