From 97695fb0b0360510b921556ab8ddf9335692a50b Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Mon, 19 May 2025 14:38:49 +0200 Subject: [PATCH] Add dependency injection for global exception handler Introduce methods in DependencyInjection.cs for configuring and using a global exception handler. Update the project file to include a reference to Microsoft.Extensions.Options. Modify GlobalExceptionHandlerMiddleware to accept IOptions for enhanced configuration through dependency injection. --- .../DependencyInjection.cs | 8 +++++++- .../DigitalData.Core.Exceptions.Middleware.csproj | 4 ++++ .../GlobalExceptionHandlerMiddleware.cs | 7 ++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/DigitalData.Core.Exceptions.Middleware/DependencyInjection.cs b/DigitalData.Core.Exceptions.Middleware/DependencyInjection.cs index f6d0424..945f18f 100644 --- a/DigitalData.Core.Exceptions.Middleware/DependencyInjection.cs +++ b/DigitalData.Core.Exceptions.Middleware/DependencyInjection.cs @@ -1,12 +1,18 @@ using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; namespace DigitalData.Core.Exceptions.Middleware; public static class DependencyInjection { + public static IServiceCollection ConfigureGlobalExceptionHandler(this IServiceCollection services, Action options) + { + return services.Configure(options); + } + public static IApplicationBuilder UseGlobalExceptionHandler(this IApplicationBuilder app) { app.UseMiddleware(); return app; } -} +} \ No newline at end of file diff --git a/DigitalData.Core.Exceptions.Middleware/DigitalData.Core.Exceptions.Middleware.csproj b/DigitalData.Core.Exceptions.Middleware/DigitalData.Core.Exceptions.Middleware.csproj index 01a4cb5..add20c3 100644 --- a/DigitalData.Core.Exceptions.Middleware/DigitalData.Core.Exceptions.Middleware.csproj +++ b/DigitalData.Core.Exceptions.Middleware/DigitalData.Core.Exceptions.Middleware.csproj @@ -6,6 +6,10 @@ enable + + + + diff --git a/DigitalData.Core.Exceptions.Middleware/GlobalExceptionHandlerMiddleware.cs b/DigitalData.Core.Exceptions.Middleware/GlobalExceptionHandlerMiddleware.cs index c775865..d52e148 100644 --- a/DigitalData.Core.Exceptions.Middleware/GlobalExceptionHandlerMiddleware.cs +++ b/DigitalData.Core.Exceptions.Middleware/GlobalExceptionHandlerMiddleware.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using System.Net; using System.Text.Json; @@ -13,17 +14,21 @@ using System.Text.Json; public class GlobalExceptionHandlerMiddleware { private readonly RequestDelegate _next; + private readonly ILogger? _logger; + private readonly GlobalExceptionHandlerOptions? _options; + /// /// Initializes a new instance of the class. /// /// The next middleware in the request pipeline. /// The logger instance for logging exceptions. - public GlobalExceptionHandlerMiddleware(RequestDelegate next, ILogger? logger = null) + public GlobalExceptionHandlerMiddleware(RequestDelegate next, ILogger? logger = null, IOptions? options = null) { _next = next; _logger = logger; + _options = options?.Value; } ///