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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值