Asp.net core asp.net core 3.1中的区域端点路由

Asp.net core asp.net core 3.1中的区域端点路由,asp.net-core,asp.net-mvc-routing,asp.net-mvc-areas,Asp.net Core,Asp.net Mvc Routing,Asp.net Mvc Areas,这是一个简单的问题,我只是出于好奇而问 我已将端点路由设置为区域: app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.Ma

这是一个简单的问题,我只是出于好奇而问

我已将端点路由设置为区域:

     app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");

            endpoints.MapControllerRoute(
                name: "areas",
                pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
        });
这里是区域主页的控制器:

[Area("mynewarea")]
[Route("mynewarea/[controller]/[action]")]
public class HomeController : Controller
{

    public IActionResult Index()
    {
        ViewBag.me = "hello world";
        return View();
    }
}
以下是视图中的标记帮助器代码

<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
<a class="nav-link text-dark" asp-area="mynewarea" asp-controller="Home" asp-action="Index">mynewarea</a>
它按预期工作,我进入主页
但是如果我把这个放在URL里

https://localhost/
https://localhost/mynewarea
https://localhost/mynewarea/Home/Index
我有一个404

但是如果我把这个放在URL里

https://localhost/
https://localhost/mynewarea
https://localhost/mynewarea/Home/Index
我得到了预期的页面

所以:
1.有人知道为什么我必须在我的区域URL中明确显示吗

2.是否有一种方法可以使默认区域URL隐式工作,即作为正确的默认URL运行aspnetcore v3.1.0

当升级到当前的v3.1.1版时,问题消失了

您能不能也给我们分享一下区域控制器的代码
MyNewArea/Home/Index
?@itneus啊是的,谢谢您的提醒-更新了-现在我更新了,我想我可能看到注释导致了问题restriction@itminus删除[路由(“mynewarea/[控制器]/[action]“”]注释会让事情变得更糟删除[Route(“mynewarea/[controller]/[action]”)注释会让事情变得更糟:我只是测试一下这种情况,但对我来说,访问
https://localhost:5001/mynewarea
(使用
3.1.100
&&
3.1.101
)。是否有复制相同问题的演示?@itminus-好的,我正在运行3.1.0,当我升级到3.1.1时,这个问题消失了。不确定是版本问题还是同时发生了其他问题-thx for yr帮助安全路径。