【问题标题】:What is equivalent to `MapSpaFallbackRoute` for ASP.NET Core 3.0 endpoints?什么相当于 ASP.NET Core 3.0 端点的“MapSpaFallbackRoute”?
【发布时间】:2021-02-12 07:27:05
【问题描述】:

在 ASP.NET Core 2.x 中,我使用Startup 类的标准路由注册Configure 方法,使用Microsoft.AspNetCore.SpaServices.Extensions Nuget 的MapSpaFallbackRoute 扩展方法为SPA 应用程序注册后备路由包装:

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 端点注册扩展方法时找不到类似的扩展方法。

【问题讨论】:

    标签: c# asp.net-core-3.0


    【解决方案1】:

    在 ASP.NET Core 3.0 中,扩展方法 MapFallbackToControllerMapSpaFallbackRoute 扩展方法具有相同的功能。

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

    【讨论】:

    • 这些替代行是必要的还是两者都需要?
    • 也许我可以这样说:只要 MVC 有办法为HomeControllerIndex 方法(我们的后备)解析路由,endpoints.MapFallbackToController("Index", "Home"); 就可以工作。跨度>
    【解决方案2】:

    这个决定帮助了我!

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

    【讨论】:

    • 请考虑在您的回答中添加一些解释和细节。
    【解决方案3】:

    这在从 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"; }); 
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2022-01-25
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      相关资源
      最近更新 更多