c#route area的坑

多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 = "" }
);
}
}

 

posted @ 2019-06-17 07:14  以函  阅读(231)  评论(0编辑  收藏  举报