在 asp.net 核心中结合常规路由和属性路由

Combining conventional routing and attribute routing in asp.net core

我尝试将常规路由和属性路由结合在一起。

然而它没有按预期工作,可能是因为我错过了做某事。

我目前拥有的:

路由:

builder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");

家庭控制器:

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

属性映射控制器:

[Route("Admin")]
public class AdminLockController : Controller
{
    [Route("ControlCenter")]
    public async Task<IActionResult> Index()
    {
        return View();
    }
}

_Layout.cshtml

<a asp-controller="Home" asp-action="Index">
<img id="app-logo-image" src="/img/corporate_logo.png"/>
</a>

现在,当视图 Home\Index.cshtml 得到呈现时,_Layout.cshtml 中的 link 将变为 <a href="/"></a>(正确)。

但是当视图 AdminLock\Index.cshtml 得到渲染时 link 是 <a href=""></a>(错误)。

所以我想我需要做一些额外的配置,但不知道是什么。有什么提示吗?

更新 1: 它在新创建的 mvc 项目中完美运行。所以一定是我的项目出了问题……我会试着找出问题所在……

找到问题。

我正在使用 Smidge 作为打包器和 Minifier。

我先注册了Smidge中间件,再注册了Mvc中间件。这似乎弄乱了路由。我在 githup 上开了一个问题。参见 https://github.com/Shazwazza/Smidge/issues/71

更改顺序可以解决问题。