Что эквивалентно MapSpaFallbackRoute для конечных точек ASP.NET Core 3.0?

В ASP.NET Core 2.x я использовал стандартный метод Configure регистрации маршрутов класса Startup, чтобы зарегистрировать резервный маршрут для приложения SPA, используя метод расширения MapSpaFallbackRoute из Microsoft.AspNetCore.SpaServices.Extensions пакета Nuget:

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 метода расширения для регистрации конечных точек.


person Nenad    schedule 06.09.2019    source источник


Ответы (3)


В 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");
    });
}
person Nenad    schedule 06.09.2019
comment
Необходимы ли эти альтернативные линии или и то, и другое? - person Marco Rebsamen; 08.11.2020
comment
Может быть, я могу сказать это так: пока у MVC есть способ разрешить маршрут для метода HomeController Index, который является нашим запасным вариантом, endpoints.MapFallbackToController("Index", "Home"); будет работать. - person Nenad; 09.11.2020

Это решение мне помогло!

public void Configure(IApplicationBuilder application)
{
    application
        // other extensions...
        .UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute())
        .UseSpa(_ => { }); // extension from 'Microsoft.AspNetCore.SpaServices.Extensions' assembly
}
person Stanislav Seregin    schedule 24.01.2020
comment
Пожалуйста, подумайте о добавлении некоторых пояснений и деталей к своему ответу. - person Foued MOUSSI; 24.01.2020

Это помогло мне при обновлении с 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"; }); 
    }
person Jp Aldrin    schedule 11.02.2021