Asp.net core 启动ASP.NET Core时的MapSpaFallbackRoute

Asp.net core 启动ASP.NET Core时的MapSpaFallbackRoute,asp.net-core,routes,.net-core,asp.net-mvc-areas,Asp.net Core,Routes,.net Core,Asp.net Mvc Areas,我在Net Core App上有一个名为Admin的区域,在启动时的MapSpaFallbackRoute设置中,我想这样设置 app.UseMvc(routes => { routes.MapSpaFallbackRoute( name: "spa-fallback-admin", defaults: new { area="Admin", controller = "Home", action = "Index" }); }); 这

我在
Net Core App
上有一个名为
Admin
的区域,在启动时的
MapSpaFallbackRoute
设置中,我想这样设置

app.UseMvc(routes =>
    {
      routes.MapSpaFallbackRoute(
      name: "spa-fallback-admin",
      defaults: new { area="Admin", controller = "Home", action = "Index" });
    });
这是定义
MapSpaFallbackRoute
的正确方法吗?我怀疑
mapsapafallbackroute
是否有属性区域, 我一直在尝试这个,我的应用程序返回404(未找到)。 那么,定义
MapSpaFallbackRoute
的正确方法是什么呢?我想在管理区域使用HomeController,并执行索引操作

这是我的完整代码,我想请求与路径管理员,管理员区域的控制器应处理

        app.MapWhen(context => context.Request.Path.Value.StartsWith("/admin"), builder =>
        {
            builder.UseMvc(routes =>
            {
                routes.MapRoute(
                name: "default",
                template: "{area=Admin}/{controller=Home}/{action=Index}/{id?}");

                routes.MapSpaFallbackRoute(
                name: "spa-fallback-admin",
                defaults: new { area="Admin", controller = "Home", action = "Index" });
            });
        });

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapSpaFallbackRoute(
                name: "spa-fallback",
                defaults: new { controller = "Home", action = "Index" });
            routes.MapRoute(
                name: "areas",
                template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
        });

感谢您的帮助

MapSpaFallbackRoute所做的是允许为处理404个案例的路由参数定义默认值

现在回答您的问题:是的,
{area}
作为路由参数,所以您可以编写上面的代码来定义默认值

您没有显示路由设置,因此我假设您的主要问题是没有在路由模板中指定
{area}
参数

例如,如果考虑常规路由,下面的工作应该是:

app.UseMvc(routes => {
           routes.MapRoute("default", "{area}/{controller}/{action}/{id?}");
           routes.MapSpaFallbackRoute(
             name: "spa-fallback-admin",
             defaults: new { area="Admin", controller = "Home", action = "Index" });
});

有关最新问题: 尝试使用
.UseWhen
而不是
.MapWhen

app.UseWhen(context => context.Request.Path.Value.StartsWith("/admin"), builder =>
{

也许它会给你一些启示:谢谢,但我没有找到我想要的,我也不想在角度上处理它,你知道怎么做吗?某些区域的门禁控制器我已经更新了我的问题,我添加了一些关于我代码的细节,你的解决方案对我仍然不起作用,我是否遗漏了什么?@ripasfilkadar请检查更新。老实说,我不知道为什么它会以这种方式工作,并创造了一个