#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 : это та же проблема.