using Microsoft.AspNetCore.Mvc; namespace Tiku.Api.Middleware; public sealed class ExceptionHandlingMiddleware( RequestDelegate next, ILogger logger, IHostEnvironment environment) { public async Task InvokeAsync(HttpContext context) { try { await next(context); } catch (Exception exception) { logger.LogError(exception, "Unhandled API exception"); var problem = new ProblemDetails { Title = "An unexpected error occurred.", Status = StatusCodes.Status500InternalServerError, Detail = environment.IsDevelopment() ? exception.Message : null, Instance = context.Request.Path }; problem.Extensions["traceId"] = context.TraceIdentifier; context.Response.StatusCode = StatusCodes.Status500InternalServerError; await context.Response.WriteAsJsonAsync(problem); } } }