ASP.NET Core 3.0 端点的 MapSpaFallbackRoute 等效项是什么?

What is equivalent to `MapSpaFallbackRoute` for ASP.NET Core 3.0 endpoints?

在 ASP.NET Core 2.x 中,我使用 Startup class 的标准路由注册 Configure 方法 register fallback route 用于 SPA 应用程序,使用来自 Microsoft.AspNetCore.SpaServices.Extensions Nuget 包的 MapSpaFallbackRoute 扩展方法:

public void Configure(IApplicationBuilder app)
{
    // ...
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
        routes.MapSpaFallbackRoute(
            name: "spa-fallback",
            defaults: new { controller = "Home", action = "Index" });
    });
}

我在使用 ASP.NET Core 3.0 推荐的 UseEndpoints 端点注册扩展方法时找不到类似的扩展方法。

在 ASP.NET Core 3.0 扩展方法中 MapFallbackToController 具有与 MapSpaFallbackRoute 扩展方法相同的功能。

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

        endpoints.MapFallbackToController("Index", "Home");
    });
}

这个决定对我很有帮助!

public void Configure(IApplicationBuilder application)
{
    application
        // other extensions...
        .UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute())
        .UseSpa(_ => { }); // extension from 'Microsoft.AspNetCore.SpaServices.Extensions' assembly
}

这帮助我从 2.1 升级到 3.1 aspnetcore3.1

        app.UseRouting();

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

            endpoints.MapControllerRoute(
                name: "api",
                pattern: "api/{controller=Default}/{action=Index}/{id?}"
                );

            endpoints.MapFallbackToController("Index", "Home");
        }).UseSpa(_ => { _.Options.DefaultPage = "spa-fallback"; }); 
    }