From aef62a34725e00073bdc7d613f116ef92c0b125a Mon Sep 17 00:00:00 2001 From: xRain Date: Sun, 10 May 2026 20:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86exceptionmiddleware,?= =?UTF-8?q?=20=E7=8E=B0=E5=9C=A8=E5=8F=AF=E4=BB=A5=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E8=B7=B3=E8=BF=87=20=E7=89=B9?= =?UTF-8?q?=E5=AE=9AstatusCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Configurations/SimApiExceptionOptions.cs | 6 ++++++ Configurations/SimApiOptions.cs | 7 +++++++ Middlewares/SimApiExceptionMiddleware.cs | 23 ++++++++++------------- 3 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 Configurations/SimApiExceptionOptions.cs diff --git a/Configurations/SimApiExceptionOptions.cs b/Configurations/SimApiExceptionOptions.cs new file mode 100644 index 0000000..a0bb6a6 --- /dev/null +++ b/Configurations/SimApiExceptionOptions.cs @@ -0,0 +1,6 @@ +namespace SimApi.Configurations; + +public class SimApiExceptionOptions +{ + public int[] SkipStatusCodes = [200, 301, 302]; +} \ No newline at end of file diff --git a/Configurations/SimApiOptions.cs b/Configurations/SimApiOptions.cs index 04b338c..c2d5db3 100644 --- a/Configurations/SimApiOptions.cs +++ b/Configurations/SimApiOptions.cs @@ -113,6 +113,13 @@ public class SimApiOptions public SimApiHttpClientOptions SimApiHttpClientOptions { get; set; } = new(); + public SimApiExceptionOptions SimApiExceptionOptions { get; set; } = new(); + + public void ConfigureSimApiException(Action? options = null) + { + options?.Invoke(SimApiExceptionOptions); + } + public void ConfigureSimApiHttpClient(Action? options = null) { options?.Invoke(SimApiHttpClientOptions); diff --git a/Middlewares/SimApiExceptionMiddleware.cs b/Middlewares/SimApiExceptionMiddleware.cs index 43970e7..66c5ae7 100644 --- a/Middlewares/SimApiExceptionMiddleware.cs +++ b/Middlewares/SimApiExceptionMiddleware.cs @@ -1,16 +1,22 @@ using System; +using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using SimApi.Communications; using Microsoft.Extensions.Logging; +using SimApi.Configurations; using SimApi.Exceptions; +using SimApi.Helpers; namespace SimApi.Middlewares; /// /// 异常处理中间件 /// -public class SimApiExceptionMiddleware(RequestDelegate next, ILogger log) +public class SimApiExceptionMiddleware( + RequestDelegate next, + ILogger log, + SimApiOptions simApiOptions) { public async Task InvokeAsync(HttpContext context) { @@ -24,18 +30,9 @@ public class SimApiExceptionMiddleware(RequestDelegate next, ILogger