c#route area的坑

it2022-05-09  28

多area时,

它会先匹配路由有没有定义路由(这点没问题)

接着

它先找路由,如果多个路由,如果有多个,再根据namespaces去筛选,(这有问题,它不是先按namespaces去筛选,再得到路由的,就可能存在,可能找到多个匹配路径,,,以及路由穿透现象,,,)

 

routes.MapRoute( name: "api", url: "api/{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "Storages.Areas.Api.Controllers" } );routes.MapRoute(name: "config",url: "config/{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },namespaces: new[] { "Storages.Areas.Config.Controllers" });

控制器,

config下,有HomeController,,api下没有,

则访问 api/home/index, 可能跳到config/home/index 了,

 

 

 

需要改为,

areas.api 下,

1。

.Areas.Api 名空间下

2。 public class ApiAreaRegistration: AreaRegistration { public override string AreaName { get { return "Api"; } }

public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "route_Api", "Api/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } ); } }

 

转载于:https://www.cnblogs.com/ijunxiong/articles/11037713.html


最新回复(0)