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