From dca3888b455456b550b195f6eada048489ec7801 Mon Sep 17 00:00:00 2001 From: Chris Martinez Date: Sun, 16 Nov 2025 10:33:14 -0800 Subject: [PATCH] Ensure 'code' extension is set. Fixes #1091 --- .../when using a query string.cs | 1 + .../src/Asp.Versioning.Http/Routing/EndpointProblem.cs | 2 +- .../Common.Acceptance.Tests/HttpContentExtensions.cs | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/AspNetCore/Acceptance/Asp.Versioning.Mvc.Acceptance.Tests/OData/Basic/given a versioned ODataController/when using a query string.cs b/src/AspNetCore/Acceptance/Asp.Versioning.Mvc.Acceptance.Tests/OData/Basic/given a versioned ODataController/when using a query string.cs index 7cea36c0..3e52096b 100644 --- a/src/AspNetCore/Acceptance/Asp.Versioning.Mvc.Acceptance.Tests/OData/Basic/given a versioned ODataController/when using a query string.cs +++ b/src/AspNetCore/Acceptance/Asp.Versioning.Mvc.Acceptance.Tests/OData/Basic/given a versioned ODataController/when using a query string.cs @@ -49,6 +49,7 @@ public async Task then_get_should_return_400_for_an_unspecified_version() // assert response.StatusCode.Should().Be( BadRequest ); problem.Type.Should().Be( ProblemDetailsDefaults.Unspecified.Type ); + problem.Extensions["code"].ToString().Should().Be( "ApiVersionUnspecified" ); } public when_using_a_query_string( BasicFixture fixture, ITestOutputHelper console ) diff --git a/src/AspNetCore/WebApi/src/Asp.Versioning.Http/Routing/EndpointProblem.cs b/src/AspNetCore/WebApi/src/Asp.Versioning.Http/Routing/EndpointProblem.cs index 9a8b539b..4de5aa52 100644 --- a/src/AspNetCore/WebApi/src/Asp.Versioning.Http/Routing/EndpointProblem.cs +++ b/src/AspNetCore/WebApi/src/Asp.Versioning.Http/Routing/EndpointProblem.cs @@ -25,7 +25,7 @@ internal static ProblemDetailsContext New( HttpContext context, ProblemDetailsIn }, }; - if ( string.IsNullOrEmpty( code ) ) + if ( !string.IsNullOrEmpty( code ) ) { newContext.ProblemDetails.Extensions[nameof( code )] = code; } diff --git a/src/Common/test/Common.Acceptance.Tests/HttpContentExtensions.cs b/src/Common/test/Common.Acceptance.Tests/HttpContentExtensions.cs index 43ffe5b9..20418181 100644 --- a/src/Common/test/Common.Acceptance.Tests/HttpContentExtensions.cs +++ b/src/Common/test/Common.Acceptance.Tests/HttpContentExtensions.cs @@ -6,20 +6,30 @@ namespace Asp.Versioning; using Microsoft.AspNetCore.Mvc; #endif using System.Net.Http; +#if NETFRAMEWORK using System.Net.Http.Formatting; +#else +using System.Net.Http.Json; +#endif internal static class HttpContentExtensions { +#if NETFRAMEWORK private static readonly JsonMediaTypeFormatter ProblemDetailsMediaTypeFormatter = new() { SupportedMediaTypes = { new( ProblemDetailsDefaults.MediaType.Json ) }, }; private static readonly IEnumerable MediaTypeFormatters = new[] { ProblemDetailsMediaTypeFormatter }; +#endif public static Task ReadAsProblemDetailsAsync( this HttpContent content, CancellationToken cancellationToken = default ) => +#if NETFRAMEWORK content.ReadAsAsync( MediaTypeFormatters, cancellationToken ); +#else + content.ReadFromJsonAsync( cancellationToken ); +#endif #pragma warning disable IDE0060 // Remove unused parameter #pragma warning disable IDE0079 // Remove unnecessary suppression