在.Net Core 2.2 版本中使用 Area, 發現配置第一個(Admin) MapAreaRoute 路由可以匹配多個 {Controller}/{Action}
路由設置
app.UseMvc(routes => { //routes.MapRoute( // name: "areas", // template: "{area:exists}/{controller=Home}/{action=Index}/{id?}" // ); routes.MapAreaRoute( name: "MyAreaAdmin", areaName: "Admin", template: "Admin/{controller=home}/{action=index}/{id?}"); routes.MapAreaRoute( name: "MyAreaAPI", areaName: "API", template: "API/{controller=home}/{action=index}/{id?}"); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });
項目截圖
瀏覽器訪問
/home/index 可以正常訪問,但是 /admin/home/index 匹配多個端點
解決辦法
這是因為 從 .Net Core 2.2 版本開始 默認開啟了端點路由,我們把他禁用就可以了,使用傳統路由模式
services.AddMvc(options => { //Core 2.2+ 默認啟動端點路由 options.EnableEndpointRouting = false; }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);