【问题标题】:How to override route in .ASP.NET Core 5?如何覆盖 .ASP.NET Core 5 中的路由?
【发布时间】:2021-06-23 01:34:35
【问题描述】:

我想在 ASP.NET Core 5 中覆盖路由

我试过这个,但它不起作用

var lastExistingRoute= routeBuilder.Routes.FirstOrDefault(x => ((Route)x).Name == "HomePage");
            routeBuilder.Routes.Remove(lastExistingRoute);
            routeBuilder.MapRoute("HomePage", "",
                new { controller = "CustomPage", action = "Homepage", });


  var lastDownloadRoute=routeBuilder.Routes.FirstOrDefault(x => ((Route)x).Name == "GetDownload");
            routeBuilder.Routes.Remove(lastDownloadRoute);
            routeBuilder.MapRoute("GetDownload", "download/getdownload/{guid}/{agree?}",
                new { controller = "AzTechProduct", action = "GetPayed", });

【问题讨论】:

  • 您是否遇到任何错误或异常?一般来说,我们使用Routing middleware,并使用 UseRouting() 和 UseEndpoints() 来配置 Asp.net core 5 中的路由,但从你的代码看来你想使用 UseMvc() 方法来配置路由, 正确的?如果是这种情况,您应该在 ConfigureServices 方法中禁用端点路由:services.AddMvc(Op => { Op.EnableEndpointRouting = false; });
  • @ZhiLv - 简单的添加新路线对我有用。此代码参考是根据 .Net Core 3.10 endpointRouteBuilder.MapControllerRoute("NewCheckout", "onepagecheckout", new { controller = "NewCheckout", action = "OnePageCheckout" });好消息是即使使用相同的路由名注册也不会引发任何异常

标签: asp.net-core routes asp.net-core-5.0 asp.net-core-routing


【解决方案1】:

为我创建了具有高不同显示顺序的相同路线

这很好,在插入同名的新路由时不会抛出任何异常

 public void RegisterRoutes(IEndpointRouteBuilder endpointRouteBuilder)
        {
           
            endpointRouteBuilder.MapControllerRoute("NewCheckout", "onepagecheckout",
                      new { controller = "NewCheckout", action = "OnePageCheckout" });
                    
        }

       
            return string.Empty;
        }

    public int Priority
        {
            get
            {
                return 100;
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多