diff --git a/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs b/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs index c10c34d12b..3ff3666101 100644 --- a/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs +++ b/src/Http/Routing/src/Matching/DfaMatcherBuilder.cs @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Routing.Matching } else { - UseCorrectCatchAllBehavior = false; // default to bugged behavior + UseCorrectCatchAllBehavior = true; // default to correct behavior } var (nodeBuilderPolicies, endpointComparerPolicies, endpointSelectorPolicies) = ExtractPolicies(policies.OrderBy(p => p.Order)); diff --git a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs index 6ac360a207..7372e4d3b3 100644 --- a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs +++ b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherBuilderTest.cs @@ -543,7 +543,7 @@ namespace Microsoft.AspNetCore.Routing.Matching public void BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_LegacyBehavior_Core(builder); + BuildDfaTree_MultipleEndpoint_ParameterAndCatchAll_OnSameNode_Order2_CorrectBehavior_Core(builder); } [Fact] @@ -636,7 +636,11 @@ namespace Microsoft.AspNetCore.Routing.Matching // Arrange var builder = CreateDfaMatcherBuilder(); builder.UseCorrectCatchAllBehavior = true; + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder); + } + private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(DfaMatcherBuilder builder) + { var endpoint1 = CreateEndpoint("{a}/{b}", order: 0); builder.AddEndpoint(endpoint1); @@ -688,10 +692,14 @@ namespace Microsoft.AspNetCore.Routing.Matching [Fact] public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior() { - // Arrange var builder = CreateDfaMatcherBuilder(); builder.UseCorrectCatchAllBehavior = true; + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder); + } + private void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(DfaMatcherBuilder builder) + { + // Arrange var endpoint1 = CreateEndpoint("a/{*b}", order: 0); builder.AddEndpoint(endpoint1); @@ -744,7 +752,7 @@ namespace Microsoft.AspNetCore.Routing.Matching public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_Legacy30Behavior_Core(builder); + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order1_CorrectBehavior_Core(builder); } // Regression test for https://github.com/dotnet/aspnetcore/issues/18677 @@ -803,7 +811,7 @@ namespace Microsoft.AspNetCore.Routing.Matching public void BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_DefaultBehavior() { var builder = CreateDfaMatcherBuilder(); - BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_Legacy30Behavior_Core(builder); + BuildDfaTree_MultipleEndpoint_CatchAllWithHigherPrecedenceThanParameter_Order2_CorrectBehavior_Core(builder); } // Regression test for https://github.com/dotnet/aspnetcore/issues/18677 diff --git a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs index 66fb02c03a..5af5ca25fe 100644 --- a/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs +++ b/src/Http/Routing/test/UnitTests/Matching/DfaMatcherConformanceTest.cs @@ -60,8 +60,8 @@ namespace Microsoft.AspNetCore.Routing.Matching // [Theory] [InlineData("/middleware", 1)] - [InlineData("/middleware/test", 0)] - [InlineData("/middleware/test1/test2", -1)] + [InlineData("/middleware/test", 1)] + [InlineData("/middleware/test1/test2", 1)] [InlineData("/bill/boga", 0)] public async Task Match_Regression_1867_DefaultBehavior(string path, int endpointIndex) {