From 79a6d56ac00e4eeae36bfde832def26500c13b95 Mon Sep 17 00:00:00 2001 From: Justin Neville Date: Sun, 16 Oct 2022 18:37:58 +0100 Subject: [PATCH 1/2] Fix for UseExceptionHandler no longer working since v10.3 RC --- .../ManagementApiComposer.cs | 45 ++++++++++++------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs b/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs index 70296b3068c1..8f6cd475e1c9 100644 --- a/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs +++ b/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; @@ -84,24 +84,37 @@ public void Compose(IUmbracoBuilder builder) "BackofficeSwagger", applicationBuilder => { - applicationBuilder.UseExceptionHandler(exceptionBuilder => exceptionBuilder.Run(async context => - { - Exception? exception = context.Features.Get()?.Error; - if (exception is null) + // Only use the API exception handler when we are requesting an API + applicationBuilder.UseWhen( + httpContext => { - return; - } + GlobalSettings? settings = httpContext.RequestServices.GetRequiredService>().Value; + IHostingEnvironment hostingEnvironment = httpContext.RequestServices.GetRequiredService(); + var officePath = settings.GetBackOfficePath(hostingEnvironment); - var response = new ProblemDetails + return httpContext.Request.Path.Value?.StartsWith($"{officePath}/api/") ?? false; + }, + innerBuilder => { - Title = exception.Message, - Detail = exception.StackTrace, - Status = StatusCodes.Status500InternalServerError, - Instance = exception.GetType().Name, - Type = "Error", - }; - await context.Response.WriteAsJsonAsync(response); - })); + innerBuilder.UseExceptionHandler(exceptionBuilder => exceptionBuilder.Run(async context => + { + Exception? exception = context.Features.Get()?.Error; + if (exception is null) + { + return; + } + + var response = new ProblemDetails + { + Title = exception.Message, + Detail = exception.StackTrace, + Status = StatusCodes.Status500InternalServerError, + Instance = exception.GetType().Name, + Type = "Error", + }; + await context.Response.WriteAsJsonAsync(response); + })); + }); }, applicationBuilder => { From bb7e889bb6fe8b23c1a3c74875b2c39551417d78 Mon Sep 17 00:00:00 2001 From: Nikolaj Date: Wed, 26 Oct 2022 11:36:37 +0200 Subject: [PATCH 2/2] Update the management api path to match the new one --- src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs b/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs index 8c5a0329dcee..071b6de63a67 100644 --- a/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs +++ b/src/Umbraco.Cms.ManagementApi/ManagementApiComposer.cs @@ -92,7 +92,7 @@ public void Compose(IUmbracoBuilder builder) IHostingEnvironment hostingEnvironment = httpContext.RequestServices.GetRequiredService(); var officePath = settings.GetBackOfficePath(hostingEnvironment); - return httpContext.Request.Path.Value?.StartsWith($"{officePath}/api/") ?? false; + return httpContext.Request.Path.Value?.StartsWith($"{officePath}/management/api/") ?? false; }, innerBuilder => {