C# Asp.net核心MVC属性路由约束的意外行为

C# Asp.net核心MVC属性路由约束的意外行为,c#,asp.net,asp.net-mvc,asp.net-core,.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,.net Core,属性路由约束中的正则表达式似乎未按预期工作。这是一个密码 [Route("movies/released/{year}/{month:regex(\\d{{2}})})] public ActionResult ByReleaseDate(int year, int month) { ... } 在这里,如果URL的月值正好是2位数,我希望调用此操作。但是,当我在浏览器上测试应用程序时,月份的长度值为2或更多位数 我使用基于约定的路由技术做了同样的事情。在那里,它按预期工作。以下是我

属性路由约束中的正则表达式似乎未按预期工作。这是一个密码

[Route("movies/released/{year}/{month:regex(\\d{{2}})})]
public ActionResult ByReleaseDate(int year, int month)
{ ... }
在这里,如果URL的月值正好是2位数,我希望调用此操作。但是,当我在浏览器上测试应用程序时,月份的长度值为2或更多位数

我使用基于约定的路由技术做了同样的事情。在那里,它按预期工作。以下是我使用的基于约定的路由代码:

endpoints.MapControllerRoute(
                    name: "ByReleaseDate",
                    pattern: "movies/released/{year}/{month}",
                    defaults: new {controller= "Movies", action = "ByReleaseDate"},
                    constraints: new {month=@"\d{2}});
但是,属性路由没有相应地工作。我想知道,它是一个bug,还是被设计成这样

我下面的教程使用的是dotnetframeworkmvc。该教程很古老,很可能是2014年的

这是我的开发设置:
操作系统:Ubuntu mate 21.04
Dotnet核心版本:Dotnet 5.0.7

编辑1:
regex(\\d{{2}})
是否将URL参数限制为正好两位数字,或者将URL参数限制为至少两位数字长?

这对我很有效

 [Route("movies/released/{year}/{month:regex(\\d{{2}})}")]
此外,您可以将路线限制为包含范围为1-12的月份,如

movies/released/{year}/{month:regex(\\d{{2}}):range(1, 12)}

请检查我的答案并尝试,它应该适合你。如果我的答案有效,请注明我的答案是否有用。谢谢你的帮助。我知道这个。我只是想知道
regex(\\d{{2}})
做什么?它是将URL参数限制为正好两位数,还是将URL参数限制为至少两位数?谢谢。至少2位数字,最多可以是任意数字,这就是我要求使用范围的原因。如果我的答案对您有用,请将其标记为有用