Catch-all 路由用于启用客户端路由

在 url 中对单页应用程序(SPA)的状态进行编码是一种很好的做法:

my-app.com/admin-spa/users/edit/id123

这允许保存和共享应用程序状态。
当用户将 url 放入浏览器的地址栏并点击进入服务器时,必须忽略所请求 URL 的客户端部分。如果你将 SPA 作为渲染的 Razor 视图(调用控制器操作的结果)而不是静态 html 文件提供,则可以使用 catch-all 路径:

public class AdminSpaController
{
    [Route("~/admin-spa/{clienSidePart*}")]
    ActionResult AdminSpa()
    {
        ...
    }
}

在这种情况下,服务器只返回 SPA,然后根据路由初始化自己。这种方法更灵活,因为它不依赖于 url-rewrite 模块。