Ошибка маршрутизации : Исключение ArgumentOutOfRangeException: Указанный аргумент находился вне диапазона допустимых значений

#routes #.net-core-3.1

Вопрос:

У меня ошибка маршрутизации, так как мы переходим с .NETCore 2.1 на 3.1.

Вот некоторые объяснения : В веб-приложении, в файле startup.cs, у нас есть 2 таких маршрута :

    endpoints.MapControllerRoute(
      name: "MyCustomRoute1",
      pattern: "MyPath/{slug}/m{id1}s{id2}", //MyPath/my-slug/m38s1
      defaults: new { controller = "home", action = "Index" },
      constraints: new { slug = "[a-z-] ", id1 = "[0-9] ", id2 = "[0-9] " });

    endpoints.MapControllerRoute(
      name: "MyCustomRoute2",
      pattern: "MyPath/{slug}/s{id1}", //MyPath/my-slug/s1
      defaults: new { controller = "home", action = "Index" },
      constraints: new { slug = "[a-z-] ", id1 = "[0-9] " });
 

Когда я запускаю этот URL-адрес https://localhost:44300/MyPath/my-slug/m38s1 У меня
нет ошибки и MyCustomRoute1 используется.

Когда я запускаю этот URL-адрес https://localhost:44300/MyPath/my-slug/s1, MyCustomRoute2 следует использовать маршрут. Но у меня есть эта ошибка :

 ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
System.ReadOnlySpan<T>.Slice(int start, int length)
Microsoft.AspNetCore.Routing.RoutePatternMatcher.MatchComplexSegmentCore(RoutePatternPathSegment routeSegment, ReadOnlySpan<char> requestSegment, RouteValueDictionary values, int indexOfLastSegmentUsed)
Microsoft.AspNetCore.Routing.RoutePatternMatcher.MatchComplexSegment(RoutePatternPathSegment routeSegment, ReadOnlySpan<char> requestSegment, RouteValueDictionary values)
Microsoft.AspNetCore.Routing.Matching.DfaMatcher.ProcessComplexSegments(Endpoint endpoint, ValueTuple<RoutePatternPathSegment, int>[] complexSegments, string path, ReadOnlySpan<PathSegment> segments, RouteValueDictionary values)
Microsoft.AspNetCore.Routing.Matching.DfaMatcher.MatchAsync(HttpContext httpContext)
Microsoft.AspNetCore.Routing.Matching.DataSourceDependentMatcher.MatchAsync(HttpContext httpContext)
Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
 

Я думаю, что механизм маршрутизации выбрал неправильный маршрут ( MyCustomRoute1 вместо MyCustomRoute2 ) и не может создать данные маршрута

Эти настройки отлично работают в .NETCore 2.1, но не в .NETCore 3.1. Я также пытаюсь в .Net5 : это та же проблема.