From 3725af795256c6879a4eec3114da49e85e4f8b29 Mon Sep 17 00:00:00 2001 From: nanxun Date: Mon, 15 Dec 2025 17:30:58 +0800 Subject: [PATCH] =?UTF-8?q?add(filter):=20=E6=96=B0=E5=A2=9E=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E9=94=99=E8=AF=AF=E6=8B=A6=E6=88=AA=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IM_API/Filters/GlobalExceptionFilter.cs | 38 + backend/IM_API/Program.cs | 6 +- frontend/web/src/views/Main.vue | 1084 ++++++----------- 3 files changed, 400 insertions(+), 728 deletions(-) create mode 100644 backend/IM_API/Filters/GlobalExceptionFilter.cs diff --git a/backend/IM_API/Filters/GlobalExceptionFilter.cs b/backend/IM_API/Filters/GlobalExceptionFilter.cs new file mode 100644 index 0000000..7a0c726 --- /dev/null +++ b/backend/IM_API/Filters/GlobalExceptionFilter.cs @@ -0,0 +1,38 @@ +using IM_API.Dtos; +using IM_API.Exceptions; +using IM_API.Tools; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace IM_API.Filters +{ + public class GlobalExceptionFilter : IExceptionFilter + { + private readonly ILogger _logger; + public GlobalExceptionFilter(ILogger logger) + { + _logger = logger; + } + + public void OnException(ExceptionContext context) + { + if(context.Exception is BaseException) + { + var exception = (BaseException)context.Exception; + BaseResponse res = new BaseResponse( + code:exception.Code, + message: exception.Message, + data:null + ); + context.Result = new JsonResult(res); + } + else + { + _logger.LogError(context.Exception,context.Exception.Message); + BaseResponse res = new BaseResponse(CodeDefine.SYSTEM_ERROR); + context.Result = new JsonResult(res); + } + context.ExceptionHandled = true; + } + } +} diff --git a/backend/IM_API/Program.cs b/backend/IM_API/Program.cs index f4d4a6f..954ebbc 100644 --- a/backend/IM_API/Program.cs +++ b/backend/IM_API/Program.cs @@ -1,5 +1,6 @@ using IM_API.Configs; +using IM_API.Filters; using IM_API.Hubs; using IM_API.Models; using Microsoft.AspNetCore.Authentication.JwtBearer; @@ -97,7 +98,10 @@ namespace IM_API } }; }); - builder.Services.AddControllers(); + builder.Services.AddControllers(options => + { + options.Filters.Add(); + }); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); diff --git a/frontend/web/src/views/Main.vue b/frontend/web/src/views/Main.vue index 103de73..ab5d6b7 100644 --- a/frontend/web/src/views/Main.vue +++ b/frontend/web/src/views/Main.vue @@ -1,18 +1,21 @@